Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果只有句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子_Python_Python 3.x_Regex_Pandas_Nltk - Fatal编程技术网

Python 如果只有句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子

Python 如果只有句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子,python,python-3.x,regex,pandas,nltk,Python,Python 3.x,Regex,Pandas,Nltk,我有一个数据框,在其中的一列中,我有一个包含多个很长句子的全文。我用NLTK来标记文本,但现在我需要确保只从给定的一长串完整单词中提取包含任何单词的句子。我写了下面的代码,但问题是,它不是检查文本中的单词作为一个整体,而是在搜索列表中找到一个给定的单词,例如“tic”,它是选择一个包含单词“statistic”的句子 symptoms = [long list of words ~ about 100] new_df = df[df['Sentence'].str.contains('|'.jo

我有一个数据框,在其中的一列中,我有一个包含多个很长句子的全文。我用
NLTK
来标记文本,但现在我需要确保只从给定的一长串完整单词中提取包含任何单词的句子。我写了下面的代码,但问题是,它不是检查文本中的单词作为一个整体,而是在搜索列表中找到一个给定的单词,例如“tic”,它是选择一个包含单词“statistic”的句子

symptoms = [long list of words ~ about 100]
new_df = df[df['Sentence'].str.contains('|'.join(symptoms))]
在这段代码的正上方,我使用下面的代码来标记我的文本

sentences = []
for row in df_no_title.itertuples():
    for sentence in sent_tokenize(row[2]):
        sentences.append((row[1], sentence))    
df = pd.DataFrame(sentences, columns=['Paper_Id', 'Sentence'])
有没有一种方法可以逐字检查句子,找到与我列表中的任何单词匹配的句子,并且只在Python中提取这些句子


请告诉我是否需要提供任何其他信息。

您使用的正则表达式几乎很好。您需要的是搜索单个单词,您可以通过使用与单词边界匹配的特殊正则表达式字符(在正则表达式意义上)来实现

因此,可行的方法是:

symptoms = [long list of words ~ about 100]
new_df = df[df['Sentence'].str.contains('\b' + '\b|\b'.join(symptoms) + '\b')]

您可以根据下面的示例检查所使用的正则表达式如何捕获症状。

您使用的正则表达式几乎很好。您需要的是搜索单个单词,您可以通过使用与单词边界匹配的特殊正则表达式字符(在正则表达式意义上)来实现

因此,可行的方法是:

symptoms = [long list of words ~ about 100]
new_df = df[df['Sentence'].str.contains('\b' + '\b|\b'.join(symptoms) + '\b')]

您可以根据下面的示例检查所使用的正则表达式如何捕捉症状。

您介意编辑您的帖子并为代码应用正确的格式吗?Python对缩进敏感,代码不应“格式化”为块引号。有关正确的语法,请参阅–您会发现它并不太难。@usr2564301当然,我刚刚修复了它。非常感谢。您介意编辑您的帖子并对代码应用正确的格式吗?Python对缩进敏感,代码不应“格式化”为块引号。有关正确的语法,请参阅–您会发现它并不太难。@usr2564301当然,我刚刚修复了它。非常感谢。感谢您的反馈,我非常感谢您的反馈。但是,我不认为这是解决方案,因为如果我使用这样添加的\b,它在症状的句子上找不到任何匹配的内容,不输出任何内容。请您提供一个句子示例和一个简短的
症状列表
?是的,当然:症状=[‘头痛’、‘胸痛’、‘流鼻涕’、‘胃痛’、‘高碳酸血症’]句子=[‘52名患者有严重的高碳酸血症伴aco2≥ 60 mmhg和28 a严重酸中毒,ph<7.2。存活组所有受试者在pecla前均在压力控制模式下进行镇静和有创机械通气,持续时间较短@ElifKaya:我不知道为什么我提出的解决方案对你不起作用。请从答案中提供的链接中查看由症状构造的正则表达式是如何工作的。感谢你的反馈,我真的很感激。但是,我不认为这是解决方案,因为如果我告诉我们,它在症状的句子中找不到任何匹配的东西e\b这样添加,没有输出任何内容。请您提供一个句子示例和一个简短的
症状列表
?是的,当然:症状=['头痛','胸痛','流鼻涕','胃痛','高碳酸血症']≥ 60 mmhg和28 a严重酸中毒,ph<7.2。存活组所有受试者在pecla前均在压力控制模式下进行镇静和有创机械通气,持续时间较短@ElifKaya:我不知道为什么我提出的解决方案对您不起作用。请从答案中提供的链接中查看根据症状构造的正则表达式是如何工作的。