import nltk
#使用 strip()方法删除输入行结尾的换行符。
f=open("LianCheng.txt", 'r', encoding='utf-8',)
sents=[]
for line in f:
sents.append(line.strip().split("\t"))
sents[0]
['供热', '双方', '室内', '温度', '存在', '争议', '时', '应', '怎样', '处理']
text=nltk.FreqDist(sents[0])
text
FreqDist({‘争议’: 1,
‘供热’: 1,
‘双方’: 1,
‘处理’: 1,
‘存在’: 1,
‘室内’: 1,
‘应’: 1,
‘怎样’: 1,
‘时’: 1,
‘温度’: 1})
t= nltk.bigrams(sents[0], pad_right=True, pad_left=True)
list(t)
[(None, ‘供热’),
(‘供热’, ‘双方’),
(‘双方’, ‘室内’),
(‘室内’, ‘温度’),
(‘温度’, ‘存在’),
(‘存在’, ‘争议’),
(‘争议’, ‘时’),
(‘时’, ‘应’),
(‘应’, ‘怎样’),
(‘怎样’, ‘处理’),
(‘处理’, None)]
trigram=nltk.trigrams(sents[0])
list(trigram)
[(‘供热’, ‘双方’, ‘室内’),
(‘双方’, ‘室内’, ‘温度’),
(‘室内’, ‘温度’, ‘存在’),
(‘温度’, ‘存在’, ‘争议’),
(‘存在’, ‘争议’, ‘时’),
(‘争议’, ‘时’, ‘应’),
(‘时’, ‘应’, ‘怎样’),
(‘应’, ‘怎样’, ‘处理’)]
finder=nltk.collocations.BigramCollocationFinder.from_words(sents[0])
bigram_measures=nltk.collocations.BigramAssocMeasures()
finder.nbest(bigram_measures.pmi, 10)
[(‘争议’, ‘时’),
(‘供热’, ‘双方’),
(‘双方’, ‘室内’),
(‘存在’, ‘争议’),
(‘室内’, ‘温度’),
(‘应’, ‘怎样’),
(‘怎样’, ‘处理’),
(‘时’, ‘应’),
(‘温度’, ‘存在’)]
finder.score_ngrams(bigram_measures.pmi)
[((‘争议’, ‘时’), 3.3219280948873626),
((‘供热’, ‘双方’), 3.3219280948873626),
((‘双方’, ‘室内’), 3.3219280948873626),
((‘存在’, ‘争议’), 3.3219280948873626),
((‘室内’, ‘温度’), 3.3219280948873626),
((‘应’, ‘怎样’), 3.3219280948873626),
((‘怎样’, ‘处理’), 3.3219280948873626),
((‘时’, ‘应’), 3.3219280948873626),
((‘温度’, ‘存在’), 3.3219280948873626)]
sorted(finder.ngram_fd.items(), key=lambda t: (-t[1], t[0]))[:10]
[((‘争议’, ‘时’), 1),
((‘供热’, ‘双方’), 1),
((‘双方’, ‘室内’), 1),
((‘存在’, ‘争议’), 1),
((‘室内’, ‘温度’), 1),
((‘应’, ‘怎样’), 1),
((‘怎样’, ‘处理’), 1),
((‘时’, ‘应’), 1),
((‘温度’, ‘存在’), 1)]
from nltk.metrics.spearman import *
results_list = ['tem1', 'atem2', 'item3', 'item4', 'item5']
print(list(ranks_from_sequence(results_list)))
sorted(list(ranks_from_sequence(results_list)), key=lambda t: (-t[1], t[0]))
[(‘tem1’, 0), (‘atem2’, 1), (‘item3’, 2), (‘item4’, 3), (‘item5’, 4)]
[(‘item5’, 4), (‘item4’, 3), (‘item3’, 2), (‘atem2’, 1), (‘tem1’, 0)]
results_scored = [('item1', 39.0), ('item2', 40.0), ('item3', 38.0),('item4', 35.0), ('item5', 14.0)]
print(list(ranks_from_scores(results_scored, rank_gap=2)))
[(‘item1’, 0), (‘item2’, 0), (‘item3’, 0), (‘item4’, 3), (‘item5’, 4)]
import nltk
#使用 strip()方法删除输入行结尾的换行符。
f=open("LianCheng.txt", 'r', encoding='utf-8',)
sents=[]
for line in f:
sents.append(line.strip().split("\t"))
sents[0]
#Out[51]:
['供热', '双方', '室内', '温度', '存在', '争议', '时', '应', '怎样', '处理']
#In [52]:
text=nltk.FreqDist(sents[0])
text
#Out[52]:
FreqDist({'争议': 1,
'供热': 1,
'双方': 1,
'处理': 1,
'存在': 1,
'室内': 1,
'应': 1,
'怎样': 1,
'时': 1,
'温度': 1})
#In [53]:
t= nltk.bigrams(sents[0], pad_right=True, pad_left=True)
list(t)
#Out[53]:
[(None, '供热'),
('供热', '双方'),
('双方', '室内'),
('室内', '温度'),
('温度', '存在'),
('存在', '争议'),
('争议', '时'),
('时', '应'),
('应', '怎样'),
('怎样', '处理'),
('处理', None)]
#In [54]:
trigram=nltk.trigrams(sents[0])
list(trigram)
#Out[54]:
[('供热', '双方', '室内'),
('双方', '室内', '温度'),
('室内', '温度', '存在'),
('温度', '存在', '争议'),
('存在', '争议', '时'),
('争议', '时', '应'),
('时', '应', '怎样'),
('应', '怎样', '处理')]
#In [55]:
finder=nltk.collocations.BigramCollocationFinder.from_words(sents[0])
bigram_measures=nltk.collocations.BigramAssocMeasures()
finder.nbest(bigram_measures.pmi, 10)
#Out[55]:
[('争议', '时'),
('供热', '双方'),
('双方', '室内'),
('存在', '争议'),
('室内', '温度'),
('应', '怎样'),
('怎样', '处理'),
('时', '应'),
('温度', '存在')]
#In [56]:
finder.score_ngrams(bigram_measures.pmi)
#Out[56]:
[(('争议', '时'), 3.3219280948873626),
(('供热', '双方'), 3.3219280948873626),
(('双方', '室内'), 3.3219280948873626),
(('存在', '争议'), 3.3219280948873626),
(('室内', '温度'), 3.3219280948873626),
(('应', '怎样'), 3.3219280948873626),
(('怎样', '处理'), 3.3219280948873626),
(('时', '应'), 3.3219280948873626),
(('温度', '存在'), 3.3219280948873626)]
#In [57]:
sorted(finder.ngram_fd.items(), key=lambda t: (-t[1], t[0]))[:10]
#Out[57]:
[(('争议', '时'), 1),
(('供热', '双方'), 1),
(('双方', '室内'), 1),
(('存在', '争议'), 1),
(('室内', '温度'), 1),
(('应', '怎样'), 1),
(('怎样', '处理'), 1),
(('时', '应'), 1),
(('温度', '存在'), 1)]
#In [58]:
from nltk.metrics.spearman import *
results_list = ['tem1', 'atem2', 'item3', 'item4', 'item5']
print(list(ranks_from_sequence(results_list)))
sorted(list(ranks_from_sequence(results_list)), key=lambda t: (-t[1], t[0]))
[('tem1', 0), ('atem2', 1), ('item3', 2), ('item4', 3), ('item5', 4)]
#Out[58]:
[('item5', 4), ('item4', 3), ('item3', 2), ('atem2', 1), ('tem1', 0)]
#In [59]:
results_scored = [('item1', 39.0), ('item2', 40.0), ('item3', 38.0),('item4', 35.0), ('item5', 14.0)]
print(list(ranks_from_scores(results_scored, rank_gap=2)))
#Out[60]:
[('item1', 0), ('item2', 0), ('item3', 0), ('item4', 3), ('item5', 4)]