使用python查找字符串中连接词的出现

时间:2019-03-25 10:28:53

标签: python

我有一个文本,其中所有单词都用“词性”标签标记。此处的文本示例:

  

会发生什么/名词/动词/下一动词/ ADJ?/打孔

我需要找到所有出现/PUNCT后跟NOUNPRONPROPN的情况-并计算最常发生的一个。

因此答案之一将如下所示: ?/PUNCT What/NOUN./PUNCT What/NOUN

此外,“交易”一词出现了6次,我需要通过代码进行显示。

我不允许使用NLTK,只能使用集合。

尝试了几种不同的方法,但实际上并不知道该怎么做。我认为我需要使用defaultdict,然后以某种方式执行while循环,这使我获得了具有正确连接词的列表。

1 个答案:

答案 0 :(得分:0)

这是一个可以满足您需求的测试程序。

它首先用空格' '分隔长字符串,从而创建单词/类元素的列表。然后,for循环检查是否出现了PUNCT和NOUN,PRON或PROPN的组合,并将其保存到列表中。

代码如下:

from collections import Counter
string = "What/NOUN could/VERB happen/VERB next/ADJ ?/PUNCT What/NOUN could/VERB happen/VERB next/ADJ ?/PUNCT"
words = string.split(' ')

found = []

for n, (first, second) in enumerate(zip(words[:-1], words[1:])):
    first_class = first.split('/')[1]
    second_class = second.split('/')[1]
    if first_class == 'PUNCT' and second_class in ["NOUN", "PRON", "PROPN"]:
        print(f"Found occurence at data list index {n} and {n+1} with {first_class}, {second_class}")
        found.append(f'{words[n]} {words[n+1]}')

数词:

words_only = [i.split('/')[0] for i in words]
word_counts = Counter(words_only).most_common()