查找句子是否与医学术语有关

时间:2019-07-31 11:50:41

标签: python-3.x deep-learning

输入:用户输入一个句子

如果该单词与任何医学术语相关,或者他需要任何医学护理,则

Output = True

其他 输出= False

我正在阅读https://www.nltk.org/。我在该网站上抓取了“ https://www.merriam-webster.com/browse/medical/a”以获取与医学相关的单词,但是我无法弄清楚如何检测与医学术语相关的句子。我没有完成任何代码,因为该算法对我来说还不清楚。

我想知道应该使用什么,从哪里开始,我需要一个教程链接来实现。任何指导将不胜感激

2 个答案:

答案 0 :(得分:0)

好的,我不明白您不了解哪一部分?因为,这个想法很简单,一个Google搜索就能为您带来轻松便捷的搜索结果。除非问题是您不了解python。在这种情况下,您将很难实现这一目标。

这个想法本身很简单-将句子标记化(在列表中有每个单词),然后搜索医学术语列表。如果当前单词在列表中,则该术语为医学术语,因此该句子也与该医学术语相关。如果您想象自己在medical_terms列表中有一个医学术语列表,那么在python中,它将看起来像这样:

>>> import nltk
>>> sentence = """At eight o'clock on Thursday morning
... Arthurs' abdomen was hurting."""
>>> tokens = nltk.word_tokenize(sentence)
>>> tokens
['At', 'eight', "o'clock", 'on', 'Thursday', 'morning',
'Arthurs', 'abdomen', "was", 'hurting', '.']
>>> def is_medical(tokens):
...   for i in tokens:
...     if i in medical_terms:
...       return True
...     else:
...       return False 

>>> is_medical(tokens)
True

您只需用NLTK标记输入的句子,然后搜索列表中是否有任何词语是医学术语。您也可以调整此功能使其与n-grams一起使用。这有很多其他方法,而且必须处理不同的特殊情况才是一个好的开始。

答案 1 :(得分:0)

我将列出从天真到聪明的方式来完成此操作的各种方法-

  1. 获取大量的医学术语词汇,对句子进行迭代,以防万一,如果发现任何内容,则返回是或否。

  2. 获取大量的医学术语词汇,遍历句子,并对每个单词进行模糊匹配,以便仍然检测并捕获在语法上(字母顺序)相同工作的变体单词。 [在python中检查Fuzzywuzzy库]

  3. 获取大量医学术语,并为每个术语定义。在这些术语的描述中,对每个单词使用经过预训练的单词嵌入(word2vec,Glove等)。取每个单词嵌入的加权总和,并将权重设置为每个单词的TFIDF,以将每个医学术语(准确地说是其描述)表示为向量。对句子也重复此过程。然后在它们之间进行余弦相似度计算,以计算与医学术语描述相关的文本在上下文上的相似度。如果相似度高于您确定的某个阈值,则返回True。 [此方法不需要确切的用语,即使该人正在谈论病情,它也应该能够检测到]

  4. 标记大量带有相应医学术语的句子(使用类似API.AI实体注释工具或RASA实体注释工具的注释)。创建一个具有输入嵌入层(您可以根据需要使用word2vec嵌入进行初始化),bi-LSTM层的神经网络,并输出带有softmax的医学术语/条件列表。这将使您有可能将每个条件或术语与该句子相关联。

  5. 创建具有编码器-解码器体系结构的神经网络,并在它们之间建立关注层。从输入语句创建编码器嵌入。创建输出为一串医学术语的解码器。使用预先注释的数据训练编码器-解码器注意层。

  6. 创建一个指针网络,该指针网络作为输入使用带有相应医学术语的句子并返回指针,该指针指向输入并标记为医学术语或非医学术语。 (不易构建fyi ...)

相关问题