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进阶(一)装饰器
装饰器是Python中的一大特色,它允许我们修改其他函数的功能而无需修改其代码,使代码更加简洁,遵循Pythonic原则。在Python中,函数可以作为参数传递给其他函数,这为装饰器的实现提供了基础。创建第一个装饰器时,我们实际已经构建了一个装饰器,其核心是接受一个函数作为参数,并返回一个新函数。然而,...

Python中+=是什么意思
Python的中文名称为蟒蛇,是一种计算机程序设计语言;是一种动态的、面向对象的脚本语言。最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。在Python中,+=是指加赋值运算符,是赋值运算符的一种。“+=”运算符可以先进行加法运算,再将结果...

python怎么获取文本框中已经输入的值
en=Entry(……)val=en.get()val就是你输入的值

Python中Subplots画图总结,plt.subplot(), ax.plot(), plt.subplot2gri...
在matplotlib.pyplot的教程中,已经探讨了画布与坐标轴的关联。在实际的可视化项目中,一张图过多的曲线可能导致视觉效果混乱,因此常需要使用子图(subplots)来展示不同内容,每个子图的坐标特性,如范围和刻度,甚至图的标识,都能通过代码精细调整。接下来我们将介绍Python中常见的子图绘制方法,并演示如何...

python变量命名规则
2、变量名不能是Python关键字(又称关键词)。上面的两个原则很简单,却非常重要,一定要仔细理解。从第1个原则可以知道,变量只可以包含英文字母(大写和小写都行)、下划线或数字,不能包含这3种字符之外的其他字符(如空格、%、-、*、/等),因为其他字符都已经被Python当成运算符来使用了。对于...

python怎么向已经存在的xml文件中追加填入数据
直接操作文件肯定不现实,只能先使用python自带模块xml.etree 解析xml,然后找到对应的节点把数据添加进去,重新写入文件。

Python3的问题,为什么定义函数已经赋值,却出错没有定义
def f(n):print(n)实际调用f a = "sss"f(a)在f函数中,n是函数f的形参<形式参数>,a是代入函数f的参数,叫实参<实际参数>。其实这里n只是a的一个副本。<有可能有例外,比如传递列表> === 作用域问题 n = "yyy"def f():print(n)这里n不属于任何函数,n是一个全局变量,如果f中使用...

python中len()的用法
有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写。比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C++重写。1发展历程编辑自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。

python中%和%有何区别
提高编程技能。总而言之,Python语言的重要性体现在其简单易学、高效开发、广泛应用、强大生态系统、跨平台兼容性以及丰富的社区支持和学习资源。Python已经成为计算机科学和软件开发领域中不可忽视的一部分,为开发者提供了强大的工具和平台,推动了创新和技术进步。

python中百分号是什么意思
python中%是什么意思,由于Python语言的简洁性,易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程,例如卡耐基梅隆大学的编程基础,麻省理工学院的计算机科学及编程导论就使用Python语言讲授,今天给大家解释一下;python中%是什么意思,%在python的...

卢湾区15132506066: python中定义一个函数a其中包含另一个函数b,为什么第一个print获得20第二个print获得函数名称 -
吴胞罗欣: 第二个print:line_conf() ,是调用函数运行,而这个函数的返回值:return line中line是一个函数.第一个print:由于:my_line = line_conf() 所以my_line = line.(上面的原因) 所以my_line(5) 相当于调用 line(5) 所以结果是20

卢湾区15132506066: python中xrange和range的区别用法 -
吴胞罗欣: 在python中 range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表. 例子: xrange 函数说明:xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器. 例子...

卢湾区15132506066: python2.7中列表和元组间的转化,如何将一个包含元组的列表变成一个列表,具体如下所示. -
吴胞罗欣: aaa=[[('s1',)], [('s1',)], [('s1',)], [('s1', 's2')], [('s1', 's2')], [('s1', 's2')], [('s1', 's2')]] bbb=[] for each in aaa: for ec in each: bbb.append(list(ec))

卢湾区15132506066: python中的for i in range怎么用 -
吴胞罗欣: for i in range(a,b,c) a为循环开始的数字(可不填,默认为0),b为循环结束的后一位(c为正数时)的数字,c为步进的距离和方向,默认为1. for i in range(1, 101,1): print i range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整...

卢湾区15132506066: python集合里面嵌套集合怎么去出集合里面的内容 -
吴胞罗欣: 本文实例讲述了python判断一个集合是否包含了另外一个集合中所有项的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 >>> L1 = [1, 2, 3, 3] >>> L2 = [1, 2, 3, 4] >>> set(L1).difference(L2) set([ ]) >>> set(L2).difference(L1) set([4])

卢湾区15132506066: python判断一个集合是否包含了另外一个集合中所有项的方法 -
吴胞罗欣: s = set([1, 3, 4, 3])data1 = 3data2 = 2if data1 in s: print("%d 在集合中." % data1)else: print("%d 不在集合中" % data2)if data2 in s: print("%d 在集合中." % data1)else: print("%d 不在集合中" % data2)

卢湾区15132506066: python中怎么表达一个list包含于另一个list -
吴胞罗欣: 实例: a = [[1, 2], [1], [3, 4], [7]] 这样a就是一个list,其中的每个元素都是list. 这样的语法也是很自然的,python的list里面可以存放任何的数据类型.

卢湾区15132506066: 如何删除python的虚拟环境 -
吴胞罗欣: rmvirtualenv venv virtualenv 是一个创建隔绝的Python环境的工具.virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包.安装 pip install virtualenv 基本使用 为一个工程创建一个虚拟环境: $ cd my_project_dir ...

卢湾区15132506066: python,如何提取包含在一个字符串中的列表或字典 -
吴胞罗欣: 12345 importre a ='abc[1,2,3]abc' t=re.findall(r'\[(.+?)\]',a) t1=re.findall(r'\d+',t[0]) b=[int(i) fori int1]

卢湾区15132506066: python中集合的特点和注意点? -
吴胞罗欣: 1、集合概念Python中的集合,是一个无序的、没有重复项的集.它支持数学概念上的集合操作,如交集、并集、补集和差集.集合是可变的,可以在其中添加或删除项.集合用花括号“{}”括起来,并用逗号“,”来分隔其中的项. 2、创建集...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网