python中的搜索方法和字符串匹配

时间:2015-08-14 13:59:16

标签: python full-text-search string-matching text-mining

我的任务是在由4列和187000行组成的表中搜索一组特定术语(大约138000个术语)。列标题为idtitlescientific_titlesynonyms,其中每列可能包含多个术语。

我最终应该找到一个csv表,其中包含已找到术语的id和术语本身。什么是最好和最快的方式呢?

在我的脚本中,我尝试按顺序迭代术语中的不同单词并将每个单词与表格每列的每一行进行比较来创建短语。

它看起来像这样:

title_prepared = string_preparation(title)
sentence_array = title_prepared.split(" ")
length = len(sentence_array)

for i in range(length):

    for place_length in range(len(sentence_array)):

        last_element = place_length + 1
        phrase = ' '.join(sentence_array[0:last_element])

        if phrase in literalhash:
            final_dict.setdefault(id,[])
            if not phrase in final_dict[id]:
                final_dict[trial_id].append(phrase)

我该怎么做?

2 个答案:

答案 0 :(得分:0)

澄清问题:我们正在运行小型科学项目,我们需要使用特定关键字提取所有文本部分。我们使用http://www.julesberman.info/coded.htm上发布的编码字典和python脚本!但似乎有些东西不能正常工作。

例如,脚本无法识别关键字"心脏病" in string"多中心随机试验评估Sarpogrelate对糖尿病或肾功能不全患者药物洗脱支架植入术后缺血性心脏病的疗效"

感谢您的理解!我们是一名生物学家和医生,对python有一点了解!

如果您需要更多代码,我会在网上发布。

答案 1 :(得分:0)

您链接到的网站上的代码区分大小写 - 只有当tumorabs.txt和neocl.xml中的条款完全相同时才会生效。如果您无法更改数据,请更改:

后:

for line in text:

添加:

    line = line.lower()

(这是缩进的四个空格)

并改变:

  phrase = ' '.join(sentence_array[0:last_element])

为:

  phrase = ' '.join(sentence_array[0:last_element]).lower()

当我更改tumorabs.txt和neocl.xml中某些数据的大小时,AFAICT可以使用网站上未经修改的代码。