如何在Pandas DataFrame行中提取多词目标短语?现有代码仅支持单词
解决多词短语匹配问题
你的问题出在原代码是按单个单词拆分句子后匹配,没法识别由多个单词组成的短语。要同时匹配单字和多词短语,用正则表达式的精确匹配更合适,具体步骤如下:
- 构建正则匹配模式:把
negative_words里的每个元素转成正则字面量(避免特殊字符干扰),用|连接所有元素,确保能匹配到完整的单字或短语。 - 提取匹配内容:用
re.findall从每条推文里找出所有符合模式的内容,再用空格拼接成字符串。
完整代码示例
import pandas as pd import re data = pd.DataFrame({ 'Tweets' : ['This is bad', 'This is terrible', 'This is good', 'This is great but trouble of life'] }) negative_words = ['bad', 'terrible', 'trouble of life'] # 构建正则模式,转义每个词避免特殊字符影响 pattern = r'(' + '|'.join(re.escape(word) for word in negative_words) + r')' # 提取所有匹配的内容并拼接 data['searched_text'] = data['Tweets'].apply(lambda x: ' '.join(re.findall(pattern, x))) print(data)
运行结果
Tweets searched_text 0 This is bad bad 1 This is terrible terrible 2 This is good 3 This is great but trouble of life trouble of life
补充说明
- 用
re.escape()处理每个关键词,是为了避免关键词里包含正则特殊字符(比如.、*)时导致匹配出错。 - 如果需要严格匹配单词边界(比如避免把
badly里的bad误匹配出来),可以给模式加上单词边界标记\b,修改后的模式为:pattern = r'\b(' + '|'.join(re.escape(word) for word in negative_words) + r')\b'
内容的提问来源于stack exchange,提问作者waji
相关产品推荐
相关产品推荐

