NLTK书中有几个字数示例,但实际上它们不是字数而是令牌数。例如,第1章“计数词汇”说以下内容给出了单词计数:
text = nltk.Text(tokens)
len(text)
但是,事实并非如此-它给出了单词和标点计数。如何获得真实的字数(忽略标点符号)?
同样,如何获得一个单词的平均字符数?显而易见的答案是:
word_average_length =(len(string_of_text)/len(text))
但是,这将因为以下原因而关闭:
我在这里想念什么吗?这必须是非常常见的NLP任务…
使用正则表达式过滤掉标点符号
import re
from collections import Counter
>>> text = ['this', 'is', 'a', 'sentence', '.']
>>> nonPunct = re.compile('.*[A-Za-z0-9].*') # must contain a letter or digit
>>> filtered = [w for w in text if nonPunct.match(w)]
>>> counts = Counter(filtered)
>>> counts
Counter({'this': 1, 'a': 1, 'is': 1, 'sentence': 1})
对每个单词的长度求和。除以字数。
>>> float(sum(map(len, filtered))) / len(filtered)
3.75
或者,您可以利用已经进行的计数来防止重新计算。这会将单词的长度乘以我们看到它的次数,然后将所有结果相加。
>>> float(sum(len(w)*c for w,c in counts.iteritems())) / len(filtered)
3.75
NLTK书中有几个单词计数的例子,但实际上它们不是单词计数,而是标记计数。例如,第1章“计算词汇”中说,下面给出了一个单词计数: 然而,它没有-它给出了一个单词和标点符号计数。你怎样才能得到一个真正的字数(忽略标点符号)? 同样,如何获得一个单词中的平均字符数?显而易见的答案是: 但是,这将关闭,因为: len(文本的字符串)是一个字符计数,包括空格 我是不是遗漏了什么?这一定是一个非常常见的NL
我有一个项目,使用泰勒级数创建一个科学计算器。此外,我正在分析IEEE 754标准浮点系统的数字。 在我的计算器中,用户选择要单精度还是双精度:我使用浮点和双变量,然后按照ieee 754规范分析数字。 如果用户想要双精度,分析如下: 这给了我 > 这个数字是以二进制格式存储在pc内存中的实际数字吗? 如果不是,我有没有办法得到存储的数字的真实值? 还有,为什么会发生这种情况? 它只打印< cod
NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。 尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词
在Java中像< code > system . current time millis()这样的C程序中,有可能得到实际的毫秒数吗?我知道< code>time(),但是我认为它不足以精确地测量短时间,不是吗?
问题内容: 我正在尝试在nltk中使用ne_chunk和pos_tag对句子进行分块。 结果如下: 我的问题是,是否可以不包括pos_tag(如上面的NNP)而仅包括Tree’GPE’,’PERSON’?“ GPE”是什么意思? 提前致谢 问题答案: 命名的实体分块器将为您提供包含分块和标签的树。您不能更改它,但是可以取出标签。从您的开始: 如果只需要块,则忽略上面的子句。您可以修改代码以任意方式
问题内容: 使用nltk时标点和数字小写不起作用。 我的密码 样本输入 预期产量 问题答案: 您的功能 缓慢 且不完整。首先,关于问题- 您不会降低数据的大小写。 您没有正确摆脱数字和标点符号。 您没有返回字符串(您应该使用来加入列表并返回它) 此外,具有文本处理功能的列表理解是引入可读性问题的主要方法,更不用说可能的冗余了(对于出现的每个条件,您可以多次调用函数。 接下来,您的功能有两个明显的低