Python中,已经得到一个包含所有单词的词典,如何统计词典中的单词在每一句话中出现的次数?

作者&投稿:第宁 (若有异议请与网页底部的电邮联系)
python中,怎么做个字典,数句子中单词出现的次数?~

text = raw_input("enter a sentence:")
words = text.split()
wordscount = [words.count(elem) for elem in words]
worddict={map(None,words,wordscount)}

要完成你的目标:
我要

计算每个词语出现的次数,
把词语出现的次数和词语列表组合成字典;

伪代码出来了,程序也就有了....

python有着强大的列表解析,内建模块使用C完成,他们很快,所以能够调用内建模块你就不要自己多事。
尽量按照伪代码去完成程序,除非必须细化,否则让python为你操作低层吧,他很聪明

第三句释义:
对于列表元素计数有很简单的list.count()方法。
这个语句就是利用了这个,statement for element in list fileter expression这是list的解析式。
通过这个你可以方便的将一个list解析为另一个。这一句就对list中所有的元素运用count()方法,并且建立新的list。
另外一个例子:a=[2,3,4,7,8]找到这个list中的偶数,并得到它们的平方列表
这样写:[elem*elem for elem in a if elem%2==0]

第四句释义:
list有个map方法,它可以提供list的映射。map(statement,list1,list2)就是将list1,list2按照statement规则映射。我的表达式是none所以得到的结果就是简单的[('this', 3), ('is', 4), ('a', 1)]这样的二元tuple列表。
dict函数则是针对上述list的。它能把上述list转化为字典。
这在你做数据处理时很有好处,你可以很轻松的建立一个hash表。

python的强大在于简明,遇到程序尝试着用最简单地方法去解决,你会很快喜欢上的。

以上^乐于与您交流

以下是一种可能的计算方法。
sentence='''by: William Shakespeare From fairest creatures we desire increase,That thereby beauty's rose might never die,But as the riper should by time decease,His tender heir might bear his memory;But thou, contracted to thine own bright eyes,Feed'st thy light's flame with self-substantial fuel,Making a famine where abundance lies,Thyself thy foe, to thy sweet self too cruel.Thout that are now the world's fresh ornamentAnd only herald to the gaudy spring,Within thine own bud buriest thy contentAnd, tender churl, mak'st waste in niggarding.Pity the world, or else this glutton be,To eat the world's due, by the grave and thee.'''words=sentence.split()from string import punctuationwords=[w.strip() for w in words]for p in punctuation: words=[w.strip(p) for w in words]diff_words=set(words)stat={}for w in diff_words: stat[w]=words.count(w)print(stat)

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。

现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1、基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

1)正向最大匹配法(由左到右的方向);

2)逆向最大匹配法(由右到左的方向);

3)最少切分(使每一句中切出的词数最小)。

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

2、基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

3、基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。笔者了解,海量科技的分词算法就采用“复方分词法”,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。

Python中,已经得到一个包含所有单词的词典,如何统计词典中的单词在每...
答:众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。

python爬数据,得到一个列表,但怎样去掉里面的span标签
答:print(result)['item1', 'item2']

Python获得用户输入的一个整数,分别输出该整数百位以上的数字和百位以...
答:```python num = int(input("请输入一个整数:"))if num >= 100:print("百位及以上的数字为:", str(num)[:-2])else:print("百位及以上的数字为:0")print("百位以下的数字为:", str(num)[-2:])```首先使用`input()`函数获取用户输入的整数,并使用`int()`函数将其转换为整型数...

在python中如何定义一个函数,能够随机获得一个每一位互不相干的四位数...
答:random.shuffle方法可以将序列中的元素随机排序 nums[:4]表明随机选取序列中前四个数字,生成一个四位随机数 map(str, nums[:4])将序列中每个元素都转化为字符串类型,即['1', '2', '3', '4']''.join(map(str, nums[:4]))将四个数字字符串拼接起来,形成一个四位随机数的字符串 这样...

Python题目 已有一个排序好的数组。现输入一个数,要求按原来顺序将它...
答:参考代码:a = [15, 12, 10]b = sorted(a)print(b)c = 13for i in range(len(b)): if b[i] > c: breakd = b[:i] + [c] + b[i:]print (d)

在python中将两位自然数的个位与十位互换,得到一个新的数怎么编辑_百度...
答:def test(): n=int(input('请输入一个2位正整数:')) if 9<n<100: return 'n=%d,交换后变成%d。' % (n,int(str(n)[::-1])) else: print('输入错误')print(test())

python中,现有一个矩阵a,用10减去矩阵的第二列每个数,得到一个新矩阵...
答:使用python的numpy包 import numpy as npa = [[1,2,3,4],[5,6,7,8],[1,2,3,4]]a = np.array(a)a[:,1] = 10 - a[:,1]print a

python求一个四位数十位和千位相等百位和个位相等
答:unit = num % 10 # 个位数 if thousand == ten and hundred == unit: print("满足条件的四位数为:", num)这段代码使用了一个循环,从1000到9999遍历所有四位数。在每次迭代中,我们提取出千位数、百位数、十位数和个位数,并检查十位和千位是否相等,百位和个位是否相等。如果满足条件,则...

python用for使每次输出多一个值
答:for i in range(4): #创建一个列表(0,1,2,3),然后遍历列表中的每个值,赋值给i if i < 2: #得到列表中的每个值后,去进行判断,如果满足i < 2,就打印出i的值 print(i) #输出的结果为:0 1 复制 第一次循环:从列表中读取到 0 ,把0赋值给变量 i ,然后进入for循环...

python中如何将整数的最后一位作为第一位重复执行并得到一个新的整数...
答:这不就是翻转一个整数吗,简单点可以这样写:print(input('请输入一个整数')[::-1])