英语分词。

zh_segment的Python项目详细描述


zh_segment是apache2许可的英语单词模块 分词,用纯python编写,基于万亿字的语料库。

基于彼得的“Natural Language Corpus Data”一章中的代码 诺维格摘自《A3》一书(Segaran和Hammerbacher,2009)。

数据文件是从Google Web Trillion Word Corpus派生的,如 由Thorsten Brants和Alex Franz描述,由 语言数据联盟。此模块仅包含 数据。unigram数据只包含最常见的333000个单词。同样地, bigram数据只包含最常见的250000个短语。每句话和 短语小写,去掉标点符号。

功能

  • 纯Python
  • 完整记录
  • 100%测试覆盖率
  • 包括Unigram和Bigram数据
  • 批处理的命令行界面
  • 易于破解(例如,不同的评分、新数据、不同的语言)
  • 在Python2.7上开发
  • 在cpython 2.6、2.7、3.2、3.3、3.4和pypy 2.5+、pypy3 2.4+
  • 上测试
https://github.com/wuhaifengdhu/zh_segment/blob/master/docs/_static/zh_segment.png?raw=true

快速启动

安装zh_段很简单 pip

$ pip install zh_segment

您可以使用python的内置帮助访问解释器中的文档 功能:

>>> import zh_segment
>>> help(zh_segment)

教程

在您自己的python程序中,您通常希望使用segment来划分 词组列表:

>>> from zh_segment import segment
>>> segment('1077501; 1296599; 5000; 5000; 4975; 36 months; 10.64%; 162.87; B; B2;;10+ years;RENT')
['1077501', '1296599', '5000', '5000', '4975', '36', 'months', '10.64%', '162.87', 'B', 'B', '2', '10+', 'years', 'RENT']

zh_段还提供了用于批处理的命令行界面。这个 接口接受两个参数:in file和out file。文件中的行是 迭代分段,用空格连接,并写入输出文件。输入和 输出默认值分别为stdin和stdout。

$ echo thisisatest | python -m zh_segment
this is a test
<>最大分段字长为24个字符。既不是unigram也不是 bigram数据包含超过该长度的单词。语料库也排除了 标点符号和所有字母都已小写。在分割文本之前, clean被调用以将输入转换为规范形式:

>>> from zh_segment import clean
>>> clean('She said, "Python rocks!"')
'shesaidpythonrocks'
>>> segment('She said, "Python rocks!"')
['she', 'said', 'python', 'rocks']

有时,研究unigram和bigram计数很有趣 他们自己。它们存储在python字典中,将单词映射到count。

>>> import zh_segment as ws
>>> ws.load()
>>> ws.UNIGRAMS['the']
23135851162.0
>>> ws.UNIGRAMS['gray']
21424658.0
>>> ws.UNIGRAMS['grey']
18276942.0

上面我们看到拼写gray比拼写gray更常见。

大图由空格连接:

>>> import heapq
>>> from pprint import pprint
>>> from operator import itemgetter
>>> pprint(heapq.nlargest(10, ws.BIGRAMS.items(), itemgetter(1)))
[('of the', 2766332391.0),
 ('in the', 1628795324.0),
 ('to the', 1139248999.0),
 ('on the', 800328815.0),
 ('for the', 692874802.0),
 ('and the', 629726893.0),
 ('to be', 505148997.0),
 ('is a', 476718990.0),
 ('with the', 461331348.0),
 ('from the', 428303219.0)]

有些大论以<;s>;开头。这表示bigram的开始:

>>> ws.BIGRAMS['<s> where']
15419048.0
>>> ws.BIGRAMS['<s> what']
11779290.0

unigrams和bigrams数据存储在 分别是unigrams.txt和bigrams.txt文件。

ZH U段许可证

版权所有2017 Z&H

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件