如何在文本中查找搭配,python
怎么在文本中找到搭配词?搭配词是指一些词组合在一起出现的频率特别高的情况。Python有一个内置的函数叫做bigrams,它可以返回一对词。
>>> bigrams(['more', 'is', 'said', 'than', 'done'])
[('more', 'is'), ('is', 'said'), ('said', 'than'), ('than', 'done')]
>>>
接下来要做的就是根据单个词的出现频率,找出那些出现得更频繁的词对。有没有什么想法可以把这个放到代码里呢?
5 个回答
3
这里有一段代码,它会接收一个小写单词的列表,然后返回一个包含所有二元组(即两个词组成的组合)及其出现次数的列表,结果会按照出现次数从高到低排序。请注意,不要用这段代码处理很大的列表。
from itertools import izip
words = ["more", "is", "said", "than", "done", "is", "said"]
words_iter = iter(words)
next(words_iter, None)
count = {}
for bigram in izip(words, words_iter):
count[bigram] = count.get(bigram, 0) + 1
print sorted(((c, b) for b, c in count.iteritems()), reverse=True)
(这里引入了words_iter
,是为了避免像izip(words, words[1:])
那样复制整个单词列表)
3
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解和使用这些数据,我们通常会把它们转换成一种统一的格式。
这种转换的过程就叫做“解析”。简单来说,解析就是把复杂的数据变得简单易懂。比如说,当你从一个网站上下载了一些信息,这些信息可能是以文本的形式存在的。我们的程序需要把这些文本转换成可以操作的数据,比如数字、列表或者对象。
在解析的过程中,我们可能会用到一些工具或者库,这些工具可以帮助我们更快地完成任务。比如,有些库专门用来处理JSON格式的数据,JSON是一种常见的数据交换格式,很多网站和应用程序都在使用它。
总之,解析就是让程序能够理解和使用各种各样的数据,让我们的编程工作变得更加顺利。
import itertools
from collections import Counter
words = ['more', 'is', 'said', 'than', 'done']
nextword = iter(words)
next(nextword)
freq=Counter(zip(words,nextword))
print(freq)
8
试试NLTK吧。你可能会对nltk.collocations.BigramCollocationFinder
这个东西比较感兴趣,不过这里有个简单的演示,教你怎么开始使用:
>>> import nltk
>>> def tokenize(sentences):
... for sent in nltk.sent_tokenize(sentences.lower()):
... for word in nltk.word_tokenize(sent):
... yield word
...
>>> nltk.Text(tkn for tkn in tokenize('mary had a little lamb.'))
<Text: mary had a little lamb ....>
>>> text = nltk.Text(tkn for tkn in tokenize('mary had a little lamb.'))
在这个小片段里没有找到任何内容,但我们继续:
>>> text.collocations(num=20)
Building collocations list