【问题标题】:Taking an input and searching for a key word接受输入并搜索关键词
【发布时间】:2016-12-15 18:45:31
【问题描述】:

我正在尝试创建一个计算机诊断服务程序。我希望能够询问用户他们的问题是什么,然后从中提取关键词。然后我想打印一个解决方案。例如,用户说“我的屏幕坏了”,程序识别“屏幕”并打印屏幕坏了的解决方案。老实说,我不知道该怎么做,我真的需要一些帮助。谢谢!

【问题讨论】:

    标签: python python-3.x diagnostics


    【解决方案1】:

    带有一些关键字字典来解决d

    d = {'screen': 'Get a new screen', ...}
    problem = input('What did you do? ').lower()
    for k in d:
        if k in problem:
            print(d[k])
    

    对于每个关键字,检查它是否存在问题。如果是,则打印相关的解决方案

    【讨论】:

    • 我将如何修改此代码以便从文本文件中读取关键字和解决方案?
    • 这就像:'screen: get a new screen, speaker: ..' but each new keyword is on a new line。所以演讲者已经下线了。
    • with open('input.txt') as f: {k: v for k, v in map(lambda x: x.split(':'), f.readlines())} 这样的东西应该可以工作。如果空格太多,您可能需要做一些strips
    【解决方案2】:

    这也有效

    import re
    D = {'screen': 1, 'keyboard': 2, 'mouse': 3}
    keywords = set(D)
    wordre = re.compile(r'\w+')
    
    problem = "The cursor doesn't move on the screen when I move the mouse"
    found = set(wordre.findall(problem.lower()))  & keywords
    print(found) # prints {'mouse', 'screen'}
    

    【讨论】:

      【解决方案3】:

      您的问题没有说明您的代码是否会对用户输入的范围施加任何限制。

      假设用户能够在很大程度上描述他的问题(即输入原始文本而不是仅仅输入一两个句子),您可以使用summa 模块。

      如果您查看它的文档,您会发现通过将其关键字功能应用于任何文本;您可以从中提取关键字。因此,您可以解析这些参数以打印相应的解决方案。一个简单的方法是维护一个字典,将您感兴趣的关键字作为键,将它们的解决方案作为值;然后只需简单地对照这些交叉检查 summa 生成的关键字即可打印您的最终解决方案。

      【讨论】:

      • 但是它的最新版本是0.0.7。这有点吓人。
      • 我不太清楚你说的吓人是什么意思。 Summa 是(已发布的)文本处理算法的实现;所以这对它的科学可信度有影响(至少在一定程度上)。在这种情况下,我认为它的版本号与这个实现是否处于早期阶段并因此没有完全完成没有任何关系。
      • 由于某种原因,我无法访问 summa 的网站。
      • @Gribouillis 我认为它现在工作得很好,如果你还想看看的话。
      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 2014-12-06
      • 2015-12-06
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多