我在 dataframe(D1)的列中有关键字,它们是1克,2克,在某些情况下也是3克。我需要在另一个 dataframe(D2)列中搜索这些具有短语的克,并计算n-gram的出现,以便为它们提供一定的权重。
我尝试使用嵌套循环,但是它的计算量太大,而且我得到的结果也令人失望,单个字符(例如'a''in')也得到了匹配。
word_list = data['Words'].values.tolist() #converting the keywords into a list
s = pd.Series({w: pos_phrases.Phrases.str.contains(w, flags=re.IGNORECASE).sum() for w in word_list})
短语在短语下的pos_phrases中。一些关键字是:
“高保真”,“高保真”,“外科手术”,“直发”,“真实”,“目标不灵敏”,“标记范围宽”等。
短语就像两个人之间的对话。例如
示例短语:“你好,晚上好,你好吗,你能指出导致多此一晚的事实吗?”
要匹配的关键字:“晚上好”,“事件多”,“事件”
此处,“事件”必须 不 匹配,因为它是“事件”的一部分。但是,它越来越匹配。我希望我能解释我的要求。
答案 0 :(得分:1)
一种干净,简单的管理方法是使用regular expressions,如下所示:
import re
Phrase = "Hello Good evening, how are you, so can you point out the facts which lead to this eventful night"
Words = "Good evening, eventful, event"
word_list = Words.split(', ')
for word in word_list:
pattern = r"\b" + word + r"\b"
matches = re.finditer(pattern, Phrase, re.MULTILINE | re.IGNORECASE)
print(word, ': ', len([match.group() for match in matches]))
Output:
## Good evening : 1
## eventful : 1
## event : 0