查找列表单词中文本中单词的出现次数

时间:2012-12-30 00:50:46

标签: python nlp

  

可能重复:
  Check if multiple strings exist in another string

说我有一个允许的单词/短语列表:

'Stack'
'Overflow'
'Stack Overflow'
'Stack Exchange'
'Exchange'

以及要解析的以下文本:

'Hello, and welcome to Stack Overflow. 
 Here are some words which should match: Stack, Exchange.'

我想获取允许列表中的单词列表:

  • ' Stack Overflow'
  • '堆栈'
  • '交换'

实现结果的最佳方法是什么?

我正在使用的允许列表可能至少有一千个单词/短语。

3 个答案:

答案 0 :(得分:2)

将单词放在列表中并在使用后

def intersect(x, y):
    return list(set(x) & set(y))
word_list_text=string.split(text)
words_found={}
words_found=intersect(word_list_text, words)

答案 1 :(得分:0)

让单词成为您要搜索的单词列表和段落(给出信息的段落) 你想在哪里搜索

for i in words:
    if i in paragraph:
        print i

这段代码对你问题中的段落和单词有好处,但是请注意,如果我们有stackoverflow而没有堆栈(单独),这段代码将打印堆栈,这既是优点也是缺点,取决于你的目的, 如果你想要单个单词使用这个

y=paragraph.split()
for i in words:
    if i in y:
        print i

答案 2 :(得分:0)

如果您的短语为:

phrases = ['Stack','Overflow','Stack Overflow','Stack Exchange','Exchange']

然后文本为:

text = """Hello, and welcome to Stack Overflow. 
Here are some words which should match:Stack, Exchange."""

然后可以完成以下任务:

found_words = [word for word in phrases if word in text]

如果它们不在文本中,这将消除其他短语。虽然除了指定的内容之外,这也会溢出。