我正在寻找一种方法来创建多个列表,并在这些列表中的关键字被提取和匹配的一个响应。
用户输入:这是一个万岁,我要去,一个慢跑。
关键词1:好的一天,好的一天,最棒的一天,最好的一天。列表2:关键词:跑步,游泳,游戏。
但是对于一个庞大的词汇数据库来说,这能和清单联系起来吗?或者它需要是特殊的词?
另外,您会推荐Python作为一个庞大的关键字数据库吗?
发布于 2018-11-15 04:12:27
要做的第一件事是将输入字符串分解为令牌。令牌只是您想要匹配的字符串的一部分。在您的示例中,您的令牌大小看起来是两个字(但不必是这样)。您也可能希望从输入字符串中删除所有标点符号。
那么,作为你的输入,你的标记是“这是”,“是”,“好的”,“好的一天”,“我是”,“我在”,“我要去”,“出去”,“出去”,“为了”,“慢跑”。
然后,您可以遍历这些令牌,并检查它们是否包含在每个列表中。可能是这样的:
input = 'This is a good day I am heading out for a jog'
words = input.split(' ')
tokens = [' '.join(words[i:i+2]) for i in range(len(words) - 1)]
for token in tokens:
if token in list1:
print('{} is in list1'.format(token))
if token in list2:
print('{} is in list2'.format(token))为了优化这一点,您可能要做的一件事是使用sets来实现list1和list2,而不是使用列表。
set1 = set(list1)set为lists提供了O(1)查找,而不是O(n),如果关键字列表很大,这是至关重要的。
https://stackoverflow.com/questions/53312075
复制相似问题