【问题标题】:Text Classification and Searching in PythonPython中的文本分类和搜索
【发布时间】:2014-11-13 18:14:20
【问题描述】:

我正在做一个小项目,需要一些帮助来搜索字符串中的文本

假设我有一个主要的字符串 1,例如:贷款协调员

假设我有另一个字符串 2,例如:金融学生贷款协调员

假设我有另一个字符串 3,例如:贷款操作员

假设我有另一个 string4,例如:Coordinator

假设我有另一个字符串 5,例如:财务助理

。 .

在 Python 中,查找与 string1 相关的所有字符串的最佳方法是什么? 例如:

由于字符串中的文本贷款协调员,字符串 2 必须处理字符串 1

因为 Loan 这个词,String 3 有事做

因为 Coordinator 这个词,字符串 4 有事做

字符串 5 无关,所以我不关心这个字符串。

2、3 和 4 应返回 FOUND 或表示存在小匹配的内容。

..

感谢所有帮助!

【问题讨论】:

  • 你尝试过的,也给出了预期的输入和预期的输出
  • “钱”和“贷款协调员”有关系吗? “经理”呢?另一方面,“rdina”呢?我认为您的要求有点不明确。
  • @hackaholic 我没有尝试任何东西,因为我不知道从哪里开始搜索字符串。我不是要python代码,只是建议从哪里开始。

标签: python string search classification distance


【解决方案1】:

您可以使用设置交集。在您的字符串中创建一组唯一的单词以进行比较。然后从其他每个字符串中取出与该组单词的交集。保留任何具有非空交集的字符串。

>>> s1 = 'Loan Coordinator'
>>> sList = ['Financial Student Loan Coordinator', 'Loan Operator', 'Coordinator', 'Financial Assistant']

>>> unique = set(s1.split())  # unique words in string 1

>>> [i for i in sList if unique & set(i.split())]
['Financial Student Loan Coordinator', 'Loan Operator', 'Coordinator']

【讨论】:

    【解决方案2】:
    #!/usr/bin/env python
    import sys
    
    
    def tokenise(s):
        return set([word.lower() for word in s.split()])
    
    
    def match_strings(primary, secondary):
        primary_tokens = tokenise(primary)
        secondary_tokens = tokenise(secondary)
    
        matches = primary_tokens.intersection(secondary_tokens)
        if matches:
            print "{} matches because of {}".format(secondary, ", ".join(matches))
        else:
            print "{} doesnt match".format(secondary)
    
    
    if __name__ == "__main__":
        primary = sys.argv[1]
        secondaries = sys.argv[2:]
    
        for secondary in secondaries:
            match_strings(primary, secondary)
    

    运行代码:

    ~/string_matcher.py "Loan Coordinator" "Financial Student Loan Coordinator" "Loan Operator" "Coordinator" "Financial Assistant"
    Financial Student Loan Coordinator matches because of coordinator, loan
    Loan Operator matches because of loan
    Coordinator matches because of coordinator
    Financial Assistant doesnt match
    

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多