【问题标题】:How to count the number of similar words present in a string when compared with a list of words?与单词列表相比,如何计算字符串中出现的相似单词的数量?
【发布时间】:2017-02-27 16:10:30
【问题描述】:

假设我们有一个单词列表 L1={好,真棒,坏,超级,玩具,山}和一个 string S="这是一个好人写的很棒的台词。". 当我们映射这两个时,我们需要找到相似词的数量。 在这种情况下,它的 2(好,真棒) 请帮助我如何在python中解决这个问题。 PS:我正在尝试根据列表和字符串之间单词的相似性为机器学习子任务创建一个二进制响应变量, 我是自然语言处理的新手,有什么功能可以轻松做到这一点吗?

PS: 我尝试首先拆分字符串并将单个单词存储在列表中,然后对其进行迭代并与原始单词列表进行比较,并在找到匹配项时增加计数器。

在 NLP 中有没有直接的函数可以做到这一点?

【问题讨论】:

  • 在我的项目中? @depperm
  • @AmireddyTharunreddy 对于这个特定的任务。你做过研究吗?你自己试过吗?
  • @Mitch 我尝试通过首先拆分字符串并将其存储在一个列表中,然后对其进行迭代并与原始列表进行比较,并在找到匹配项时增加计数器。我的问题是如何降低复杂性,或者这些是完成任务的直接功能吗?

标签: python algorithm machine-learning nlp


【解决方案1】:
for x in L1:
    if x in S:
        print(x)
        counter += 1

首先我们遍历 L1 中的每个单词,然后使用in 运算符检查是否在 S 中找到了这些单词。如果是,我们打印该单词并将计数器加一。

注意:这只会检查它是否在 S 中,而不管有多少实例。

【讨论】:

  • 这将对 OP 有所帮助,如果你能对你在做什么以及你在做什么给出一个简单的解释。
【解决方案2】:

尝试以下方法:

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)

同一个词多次匹配会增加计数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2017-08-29
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多