从句子中快速提取术语

2024-05-29 11:58:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我从事文本挖掘,我的工作集中于生物医学实体(基因、蛋白质、药物和疾病)。我想和大家分享一些问题。在

现在,我的目标是在生物医学文本(来自Medline)中找到生物医学实体,通过术语词典,我可以用它的唯一标识符来识别找到的每个实体。在

为了存储文本、字典和结果,我使用了MongoDB(一个非sql数据库)。每个摘要被分成句子,每个句子被存储在一个新的记录中(包括标记、语块和词性标记的列表)。为了找到实体,我得到所有的句子,并为每个句子在字典中为每个术语创建一个正则表达式(在Python中):

for term in dicitonary:
     matches = re.finditer(r'(' + term + ')', sentence)
     for m in matches:
          ini = m.start()
          end = m.end()
          result.append(ini, end, dictionary.get_identification[term])

但这真的很慢,我有几个15万个摘要的子集(超过100万个句子)。在

对我来说,从字典中提取更多术语不完全在词典中的实体是非常有趣的,但它可以增加我的运行时间。在

我认为我的问题是为每个句子做很多正则表达式(我有一本字典,有300000条词条),因为我必须在句子中找到术语。没有机器学习算法,如何解决这个问题?用ML算法呢?现在,我可以灵活地改变我的编程语言,数据库。。。在

非常感谢!!!在

谨致问候

阿莱克斯。在


Tags: in标记文本实体数据库for字典ini
1条回答
网友
1楼 · 发布于 2024-05-29 11:58:26

与其构建一个RE per term,不如构建一个可以捕捉所有这些元素的单个析取函数:

pattern = re.compile("(%s)" % "|".join(re.escape(term) for term in dictionary))

然后使用pattern.finditer。在

至于“如何使用机器学习”,那是一个过于宽泛的问题,伊荷。从谷歌搜索“生物医学命名实体识别”开始,有大量关于这个问题的文献和各种各样的工具。在

相关问题 更多 >

    热门问题