检查一个句子是否包含我的列表中的两个或更多单词

时间:2017-10-23 02:48:54

标签: python list

感谢每次我在这里发布问题时快速而有益的帮助!:)

希望你们过得愉快!

我的问题是如何检查一个句子是否包含我的列表中的两个或多个单词

例如

  

mylist = ['apple','banana','monkey','love']

     

Sentence1 =“猴子喜欢香蕉”

     

- >作为猴子,爱情,香蕉这三个单词在列表中我希望得到这句话1为正面

     

Sentence2 =“狗爱猫”

     

- >因为sentence2只包含我的列表中的“love”这个词,所以我想把这个句子作为否定

我了解到,如果检查一个句子是否包含列表中的任何单个单词,我可以使用

如果有的话(e在wordset中为e的文本):

但是,我找不到可以解决上述问题的解决方案。

有人可以帮忙吗?

(因为有很多句子没有使用英语,所以很难使用NLP工具,例如词干或lemmantizing)

3 个答案:

答案 0 :(得分:6)

您需要遍历mylist并检查句子中是否存在mylist中的单词。如果存在,将其放入列表并找到长度。如果长度> = 2则为正!

>>> mylist = ['apple', 'banana', 'monkey', 'love']
>>> s1 = "Monkeys love bananas"    
>>> len([each for each in mylist if each.lower() in s1.lower()])>=2
True
>>> s2="The dog loves cats"
>>> len([each for each in mylist if each.lower() in s2.lower()])>=2
False

使用lambda,

>>> checkPresence = lambda mylist,s : len([each for each in mylist if each.lower() in s.lower()])>=2
>>> checkPresence(mylist,s1)
True
>>> checkPresence(mylist,s2)
False

答案 1 :(得分:1)

你可以试试这个:

mylist = ['apple', 'banana', 'monkey', 'love']
sentence1 = "Monkeys love bananas"
final_val = 1 if sum(i in sentence1.lower() for i in mylist) > 1 else -1

输出:

1

测试2:

mylist = ['apple', 'banana', 'monkey', 'love']
sentence2 = "The dog loves cats"
final_val = 1 if sum(i in sentence2.lower() for i in mylist) > 1 else -1
print(final_val)

输出:

-1

答案 2 :(得分:1)

除了其他 pythonic 答案之外,这里有一个简单的(可能是快速的)方式:

>>> mylist = ['apple', 'banana', 'monkey', 'love']
>>> def in_my_list(sentence):
        found = 0
        sentence = sentence.lower()
        for word in mylist:
            if word in sentence:
                found += 1
            if found==2:
                return True
        return False

>>> sentence1 = "Monkeys love bananas"
>>> sentence2 = "The dog loves cats"
>>> in_my_list(sentence1)
True
>>> in_my_list(sentence2)
False

它不会检查mylist中的所有字词;因此比len / sum版本更快。