【问题标题】:Searching for keywords in python [closed]在python中搜索关键字[关闭]
【发布时间】:2016-06-08 16:08:25
【问题描述】:

如果我在 python 中提出问题并且答案是“我的手机里有水”之类的句子,我怎样才能让程序检测到“水”或“电话”这个词并打印一个解决方案,例如“干”你的手机”?

similar_words = ["water","damaged","wet","soaked","battery"]

words = input("Enter a word or sentence: ").strip().split()

for word in words:

if word.lower() in similar_words:

           print ("Go to a mechanic")


else:    

     print ("sorry your answer doesn't match the criteria, please try again")

这是我到目前为止所做的,但是当我用一句话回答问题时,我得到了我想要的解决方案,即“去找机械师”,我是新手,所以请不要忍受我的愚蠢。

【问题讨论】:

  • 根据您的问题的意思,考虑到 AI 的当前状态,答案的范围从完全微不足道到不可能。您需要提供更多详细信息,包括您为尝试解决问题而编写的代码。
  • 这叫自然语言处理,对于这个网站来说答案太大了。
  • 我身上没有代码,但我会尝试复制它,我认为这上面会有一个功能,但没有。我很确定它不是自然语言,它必须是基本的 python,我是新手。
  • @polku 的意思是您正在尝试做的是自然语言处理 - 即您正在尝试解释正常的口语。这很难做到——是的,你可以在 Python 中做到,但它不是“新手”级别的——它需要很多巧妙的技术来进行语法分析和输入语义分析。如果你想要一些非常基本的东西——那么——你的程序永远不会产生“干手机”——因为它不会出现在你的代码中的任何地方。
  • 如果你有一个固定的单词列表和一个带有针对这些单词的预设响应的字典,那么很容易将一个字符串拆分为一个单词列表,然后遍历字典键,测试它们通过适当使用in 运算符(或者可能使用集合操作)来获得单词列表。

标签: python list keyword


【解决方案1】:

一个简单的基本解决方案:

words = input("Enter a word or sentence: ").strip()
words = words.lower()
if 'water' in words and 'phone' in words:
    print('Dry your phone')

这与您的“问题描述”完全匹配,但如果您输入以下内容,当然也会生成相同的消息:

  • 我的手机没水了
  • 我的手机没进水
  • 我的洗澡水里有手机

它会完全忽略:

  • 我想我的手机弄湿了。

请记住 - 此解决方案无法很好地扩展(当您尝试“理解”更多句子时,代码会很快变得复杂),它无法理解常见的变体或否定词或同义词。

这并不是任何形式的人工智能——你可以很容易地寻找特定的数字而不是单词。

要让计算机真正“理解”你的意思 - 所以它知道“弄湿”与“弄水”相似,并且需要相同的答案,或者识别“没有弄水”例如,作为否定 - 是另一场球赛

【讨论】:

  • 这真的让我很感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多