使用Pandas搜索文本中的所有匹配项

Arn*_*ein 4 python regex nlp pandas

我有一个特定单词列表('令牌'),需要在纯文本中找到所有这些单词(如果有的话).我更喜欢使用Pandas来加载文本并执行搜索.我正在使用pandas,因为我的短文本集合带有时间戳,并且很容易将这些短文本组织成单个数据结构中的pandas.

例如:

考虑在Pandas上传的一系列获取的twitters:

                                              twitts
0                       today is a great day for BWM
1                    prices of german cars increased
2             Japan introduced a new model of Toyota
3  German car makers, such as BMW, Audi and VW mo...
Run Code Online (Sandbox Code Playgroud)

和汽车制造商名单:

list_of_car_makers = ['BMW', 'Audi','Mercedes','Toyota','Honda', 'VW']
Run Code Online (Sandbox Code Playgroud)

理想情况下,我需要获得以下数据框:

                                              twitts  cars_mentioned
0                       today is a great day for BMW  [BMW]
1                    prices of german cars increased  []
2             Japan introduced a new model of Toyota  [Toyota]
3  German car makers, such as BMW, Audi and VW mo...  [BMW, Audi, VW]
Run Code Online (Sandbox Code Playgroud)

我对NLP和文本挖掘方法都很陌生,我在互联网上阅读/搜索了很多关于该主题的材料.我的猜测是我可以使用regex和使用re.findall(),但后来我需要遍历整个数据帧的令牌(汽车制造商)列表.

有没有更简洁的方法来完成这个简单的任务,特别是对于Panads?

Ale*_*lex 5

你可以特别使用pandas .str方法.findall:

df['cars_mentioned'] = df['twitts'].str.findall('|'.join(list_of_car_makers))
Run Code Online (Sandbox Code Playgroud)

  • '|'.加入(list_of_car_makers) (2认同)