快速从句子中提取术语
我正在从事文本挖掘工作,我的工作重点是生物医学实体(基因,蛋白质,药物和疾病)。 我想与你分享一些问题。
现在,我的目标是找到生物医学文本(来自Medline)以及词典词典中的生物医学实体,我可以通过其唯一标识符来识别找到的每个实体。
为了存储文本,dicitionaries和结果,我正在使用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])
但它确实很慢,我有几个150,000个摘要的子集(> 1,000,000个句子)。
对我来说,真正有趣的软匹配提取更多的实体,其术语不完全在我的字典中,但它可以增加我的运行时间。
我认为我的问题是为每个句子做很多正则表达式(我有30万条词典),因为我必须在句子中找到这些词。 没有机器学习算法,你怎么解决这个问题? 和ML算法? 现在,我可以灵活地改变我的编程语言,数据库......
非常感谢你!!!
问候,
亚历克斯。
而不是每term
建立一个可再生能源,建立一个可以捕获所有能源的单一分离的能源:
pattern = re.compile("(%s)" % "|".join(re.escape(term) for term in dictionary))
然后使用pattern.finditer
。
至于“如何使用机器学习”,这个问题太广泛了,恕我直言。 以“生物医学命名实体识别”开始Google搜索 - 有大量有关该问题和各种工具的文献。
链接地址: http://www.djcxy.com/p/57767.html