假设我们有一个单词列表 L1 = {good,awesome,bad,super,toy,hill}和a string S =“这是一个由好人写的令人敬畏的线条。” 当我们映射这两个时,我们需要找到相似单词的数量。 在这种情况下它的2(好,很棒) 请帮我在python中解决这个问题。 PS:我正在尝试根据列表和字符串之间的单词相似性为机器学习子任务创建二进制响应变量, 我是自然语言处理的新手,有什么功能可以轻松完成吗?
PS: 我试过通过首先拆分字符串并将单个单词存储在列表中,然后迭代它并与原始单词列表进行比较,并在找到匹配项时递增计数器。
在NLP中有没有直接的功能?
答案 0 :(得分:1)
for x in L1:
if x in S:
print(x)
counter += 1
首先我们遍历L1中的每个单词,然后我们使用in
运算符来检查是否在S中找到了这些单词。如果是,我们打印单词并将计数器递增1
注意:这只会检查它是否在S中,而不管实例数是多少。
答案 1 :(得分:0)
尝试以下方法:
from collections import Counter
words = set(['good', 'awesome', 'bad', 'super', 'toy', 'hill'])
latest = "this is an awesome line written by a good guy."
latest_counted = Counter(latest.strip().split())
common_words = words.intersection(latest_counted)
count_common = sum(latest_counted[wrd] for wrd in common_words)
print('There are %i words common (including duplicates).' % count_common)
同一个单词的多个匹配将增加计数。