首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想从10,000篇文章中提取包含药物和基因名称的句子

我想从10,000篇文章中提取包含药物和基因名称的句子
EN

Stack Overflow用户
提问于 2016-11-14 15:10:42
回答 3查看 664关注 0票数 0

我想从10,000篇文章中提取包含药物和基因名称的句子。我的代码是

代码语言:javascript
复制
import re
import glob
import fnmatch
import nltk
from nltk.tokenize import sent_tokenize, word_tokenize


flist= glob.glob ("C:/Users/Emma Belladona/Desktop/drug working/*.txt")
print (flist)
for txt in flist:
    #print (txt)
    fr = open (txt, "r")
    tmp = fr.read().strip()
    a = (sent_tokenize(tmp))
    b = (word_tokenize(tmp))
    for c, value in enumerate(a, 1):
        if value.find("SLC22A1") != -1 and value.find("Metformin"):
            print ("Result", value)
            re.findall("\w+\s?[gene]+", a)
        else:
            if value.find("Metformin") != -1 and value.find("SLC22A1"):
                print ("Results", value)
        if value.find("SLC29B2") != -1 and value.find("Metformin"):
            print ("Result", value)

我想从整篇文章中提取有基因和药物名称的句子。例如,“二甲双胍减少了对数转换的SLC22A1排泄量(从1.5860.47降至1.0060.52,p.0.001)。”总而言之,在这项对照良好的研究中,我们不能证明所研究的SLC22A1、血管紧张素转换酶、AGTR1和ADD1的多态性与二甲双胍的降糖反应之间存在显著的相关性。

这段代码返回了很多句子,也就是说,如果上面的一个词出现在打印出来的句子中…!帮我写这段代码

EN

回答 3

Stack Overflow用户

发布于 2016-11-16 17:37:11

您没有显示真实的代码,但是您现在拥有的代码至少有一个错误,这将导致大量虚假输出。它在这一行上:

代码语言:javascript
复制
re.findall("\w+\s?[gene]+", a)

此正则表达式不匹配包含gene的字符串,这显然是您想要的。它匹配(几乎)任何包含字母gen之一的字符串。

这不可能是您真正的代码,因为a是一个列表,您会在该行得到一个错误--而且您忽略了findall()的结果!理清你的问题,让它反映现实。如果您的问题仍未解决,请编辑您的问题,并至少包括一句是输出的一部分但您不希望看到的句子。

票数 1
EN

Stack Overflow用户

发布于 2016-11-16 17:17:18

执行此操作时:

代码语言:javascript
复制
if value.find("SLC22A1") != -1 and value.find("Metformin"):

你可能想要这个:

代码语言:javascript
复制
if value.find("SLC22A1") != -1 and value.find("Metformin") != -1:

由于返回值的原因,这个find方法很容易出错,而且您不关心位置,所以最好使用in

代码语言:javascript
复制
if "SLC22A1" in vlow and "metformin" in value.lower():
票数 0
EN

Stack Overflow用户

发布于 2016-11-16 17:48:59

我会采取一种不同的方法:

  1. 读入文本文件
  2. 将文本文件拆分成句子。请查看https://stackoverflow.com/a/28093215/223543,了解手动实现这一点的方法。或者,您可以使用ntlk.tokenizer.punkt模块。(在亚历克西斯在下面的评论中给我指出了正确的方向后进行了编辑)。
  3. 检查我是否在每句话中找到了你的关键术语,如果找到了,就打印出来。

只要你的文本文件格式良好,这应该是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40583530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档