【问题标题】:Loosely searching multiple words in a sentence using python使用python在一个句子中松散地搜索多个单词
【发布时间】:2019-12-02 14:56:30
【问题描述】:

我正在尝试在字符串中搜索单词,但我的输出为 false,因为“men”和“shirt”由于复数因素在字符串中不匹配。我真正想要的是匹配 "men" 与 "mens" 和 "shirt" 与 "shirts”。我该怎么做,如果有一种简单的方法可以在 python 中完成,请分享。

strings = ['get-upto-70-off-on-mens-t-shirts']
words = ['men','shirt']
print map(lambda x: all(map(lambda y:y in x.split(),words)),strings)

输出

False

【问题讨论】:

  • 在我的脑海中,你可以做以下两件事之一:stem 单词并检查它是否在候选短语中,或者在单词和候选短语之间计算 a distance measure ,如果它低于某个阈值,则接受它作为匹配项。

标签: python string python-2.7


【解决方案1】:

一种可能性是使用 Python 的内置 difflib 模块。 get_close_matches() (doc) 函数可能需要一些调整:

import difflib

strings = ['get-upto-70-off-on-mens-t-shirts']
words = ['men','shirt']

for w in words:
    for s in strings:
        s = s.split('-')
        m = difflib.get_close_matches(w, s)
        print('Word: "{}" Close matches: {}'.format(w, m))

打印:

Word: "men" Close matches: ['mens']
Word: "shirt" Close matches: ['shirts']

【讨论】:

    【解决方案2】:

    您可以在 NTLK 库中使用词形还原(删除 's' 'ing' 等)或使用 FUZZYWUZZY 库进行模糊字符串匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多