问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用python实现英文短文的双词频统计?

发布网友 发布时间:2022-05-10 23:49

我来回答

4个回答

热心网友 时间:2022-05-11 01:19

import re
from itertools import imap as map
from collections import Counter

def parserwords(sentence):
    preword = ''
    result = []
    for word in re.findall('\w+', sentence.lower()):
        if preword:
            result.append((preword, word))
        preword = word
    return result

context = """
Do you hear the people sing, singing a song of angry men. 
It is the music of a people, who will not be slaves again, 
when the beating of your heart echoes the beating of the drums. 
There is a life about to start when tomorrow comes.
"""


words = []
for sentence in map(parserwords, 
        re.split(r'[,.]', context.lower())):
    words.extend(sentence)

prefixcounter = Counter([word[0] for word in words])
counter = Counter(words)
meter = {}
for pre, post in counter.iterkeys():
    meter[(pre, post)] = 1. * counter[(pre, post)] / prefixcounter[pre]

result = sorted(meter.iteritems(),
    cmp = lambda a, b: cmp(b[1], a[1]) or cmp(a[0], b[0])
    )

print result[:5]

热心网友 时间:2022-05-11 02:37

data="""Do you hear the people sing, singing a song of angry men. It is the music of a people, who will not be slaves again, when the beating of your heart echoes the beating of the drums. There is a life about to start when tomorrow comes."""
data=data.replace(',','')
data=data.replace('.','')
ws=data.split()
dic={}#count two words
ws2=[]#two words
for i in range(len(ws)-1):
ws2.append(ws[i]+" "+ws[i+1])
for w2 in ws2:
if dic.get(w2)==None:
dic[w2]=1
else:
dic[w2]+=1
dic_first={}#count two words by first word
for w2 in ws2:
(l,r)=w2.split()
if dic_first.get(l)==None:
dic_first[l]=1
else:
dic_first[l]+=1
for w2 in ws2:#output
(l,r)=w2.split()
print w2,dic[w2],dic_first[l],dic[w2]/float(dic_first[l])

追问最后输出还有些问题,仅输出n值和双词短语,并且排列顺序是由n值从大至小,n值同样的情况下按双词短语的字母顺序(a-z,a在最前),怎样输出前五个呢?
另外在句号逗号两边的词不能形成一个短语呀,应该把它删掉

追答def count(ju,dic,dic_first):
ws=ju.split()
ws2=[]
for i in range(len(ws)-1):
ws2.append(ws[i]+" "+ws[i+1])
for w2 in ws2:
if dic.get(w2)==None:
dic[w2]=1
else:
dic[w2]+=1
if dic.get("a life")==2:
print ws2
raw_input()
for w2 in ws2:
(l,r)=w2.split()
if dic_first.get(l)==None:
dic_first[l]=1
else:
dic_first[l]+=1
data="""Do you hear the people sing, singing a song of angry men. It is the music of a people, who will not be slaves again, when the beating of your heart echoes the beating of the drums. There is a life about to start when tomorrow comes."""
data=data.replace(',','.')
jus=data.split('.')
dic={}
dic_first={}
ws2=[]
for ju in jus:
count(ju,dic,dic_first)
out=[]
for k in dic:#output
(l,r)=k.split()
print k,dic[k],dic_first[l]
n=dic[k]/float(dic_first[l])
out.append([n,k])
out.sort()
for o in out:
print o[0],o[1]

热心网友 时间:2022-05-11 04:11

感觉不是很难啊,1.split切句子,2.split切词,3.遍历生成词组,扔到dict里统计就可以了啊
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求电脑玩安卓游戏的方法。步骤。以及所有的文件~谢谢 。有的联系我~ 我在电脑管家软件管理下的鹰击长空2都是解压包 澳洲留学读研申请攻略 澳洲留学申请时间是什么时候 去澳大利亚上大学需要什么手续 澳洲留学申请流程时间如何? 中南财经政法大学保险精算专业介绍 黄福记小吃梅干菜扣肉饼怎么样 如何开一家梅干菜扣肉饼店,成本要多少 在照明行业LED配光曲线图怎么看 罗永浩称新公司不会取名锤子,他接下来有哪些计划和动作? 罗永浩除了锤子科技还有其他行业吗,为何他名下会有27家公司? 侠盗猎车手罪恶都市让坦克移动速度加快的秘籍 电脑的侠盗猎车手罪恶都市坦克秘籍 发快递可以发糖炒板栗么, ? 我现在要炒栗子有没有? 街边的糖炒栗子应如何挑选? 什么是出口信用证业务 国际信用证 为什么我的电脑屏幕会抖动?就是在浏览网页时,往下拉时页面不稳定? 请问:国际信用证结算需要注意哪些事项? 电脑在浏览网页的时候有点抖动是怎么回事? 网页抖动怎么办,是怎么回事。 电脑网页界面会抖动是怎么了,请达人帮忙 电脑打开一个网页老是上下晃动是怎么回事?怎么解决? win2003服务器自动更新后,远程桌面连不上 笔记本电脑打开页面 只要是黑色页面就一直抖动 是怎么回事 已经拿到2003服务器的管理员权限 可是无法通过远程桌面连接上 为什么呢? 龟是怎么修成仙的修成后有何本事 大家帮我鉴定下乌龟的公母吧!!附图! 美的空调如何进入ap模式? ug8.5自动编程里面倒角使用什么指令 UG编程怎么给工件倒角?小弟真心求教! 梦见去世的奶奶在烤取暖器,窗户是开着的,我说关取暖器,去世奶奶说不要关,她冷。什么意思啊? 清理冰箱冰霜最好办法 利率应用题? 利率应用题 关于利率应用题 银行利率应用题 银行利率方程应用题 六年级利息与利率应用题 多一点 关于年利率的应用题 应用题啊,关于利息的 自己骑电车摔倒预示什么 结婚当天新娘摔倒寓意着什么 上厕所马桶摔了有什么预兆 早上男朋友手切到,我摔倒了,有什么预兆? 联想手机后盖怎样打开? 联想手机忘记密码怎样开锁 联想手机A360t开不了机怎么办?如何进行root?