刑侦官,分词器

DetectorMorse的Python项目详细描述


莫尔斯探测器

morse检测器是一个句子边界检测程序(以下简称sbd),也称为句子分割。请考虑以下句子,摘自宾夕法尼亚州特雷班克的华尔街日报部分:

Rolls-Royce Motor Cars Inc. said it expects its U.S. sales to remain
steady at about 1,200 cars in 1990.

这个句子包含四个句点,但只有最后一个表示句子边界。U.S.中的第一个是首字母缩写词的一部分,而不是句子边界;类似于$12.53的表达式也是如此。但是Inc.U.S.结尾的句点可以很容易地表示句子的边界。人类使用本地上下文来确定这两个句点都不表示句子边界(例如,如果紧跟在U.S.之后有一个句子边界,那么动词expect的选择属性就不满足)。morse检测器采用艺术化、手工制作的上下文特征和低影响、不留痕迹的机器学习方法自动检测句子边界。

sbd是许多自然语言处理管道中最早的一个。由于这一步的错误可能会传播,sbd是自然语言处理中的一个重要问题,尽管它被忽略了。

morse探测器已经在cpython 3.4和pypy3(2.3.1,对应于python3.2)上进行了测试;后者的速度要快得多。morse检测器依赖于python模块nlup(而python模块又依赖于jsonpickle)来(反)序列化模型。有关使用的版本,请参见requirements.txt

安装

pip install detectormorse

用法

Detector Morse, by Kyle Gorman
     
usage: python -m detectormorse [-h] [-v | -V] (-t TRAIN | -r [READ])
                               (-s SEGMENT | -w WRITE | -e EVALUATE)
                               [-E EPOCHS] [-C] [--preserve-whitespace]

Detector Morse

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         enable verbose output
  -V, --really-verbose  enable even more verbose output
  -t TRAIN, --train TRAIN
                        training data
  -r [READ], --read [READ]
                        read in a serialized model from a path or read the
                        default model if no path is specified
  -s SEGMENT, --segment SEGMENT
                        segment sentences
  -w WRITE, --write WRITE
                        write out serialized model
  -e EVALUATE, --evaluate EVALUATE
                        evaluate on segmented data
  -E EPOCHS, --epochs EPOCHS
                        # of epochs (default: 20)
  -C, --nocase          disable case features
  --preserve-whitespace
                        preserve whitespace when segmenting

用于培训(-t/--train)和评估(-e/--evaluate)的文件每行应包含一个句子;否则将忽略换行符。

当分割一个文件(-s/--segment)时,detectorse只需在预测的句子边界后面插入一个新行,而这些句子边界还没有被一个新行标记。所有其他换行符都是通过的,不受干扰。

包含的DM-wsj.json.gz是一个分段器模型,它在penn treebank的wall st.journal部分进行训练。此模型可以通过使用detector.default_model()或通过在命令行指定不带路径的-r来加载。

方法

this blog post

注意事项

detectormorse通过将整个文件读入内存来处理文本。这意味着它无法处理不适合可用RAM的文件。解决这个问题的最简单方法是在您自己的python脚本中导入Detector实例。

精彩的附加节目!

我包含了一个perl脚本untokenize.pl,它试图反转penn treebank标记化过程。标记化是一个固有的“有损”过程,因此不能保证输出就是它在《华尔街日报》上出现的样子。但是,这些规则似乎是正确的,并且产生了正确的文本,我已经将其用于所有的实验。update(2015-02-10):我已经删除了这个脚本;我现在只使用斯坦福标记器来实现这个目的。

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

推荐PyPI第三方库


热门话题
Java正则表达式匹配子字符串/字符在字符串中出现的次数   java使用来自其他模块的Springbean?   java如何创建简单报警应用程序中的列表项,该应用程序可以在安卓中“创建/编辑报警”设置屏幕   java如何让我的应用程序运行一段时间?   java“列表接口提供了两种有效插入和删除多个元素的方法”有人知道第二种方法是什么吗?   java代码层中的异常处理   java在比较字符串和null时显示异常   spring在Java(基本XSS)中对脚本相关HTML标记的错误中和   java每30秒在后台刷新一次Android应用程序以获取推送通知\   从JSON文件Java获取字符串   java Hibernate SessionFactory:如何在Tomcat中配置JNDI?   java无法访问应用程序中的h2数据库文件   java领域响应状态=400   java使用ajax在JSP中获取“request.setAttribute”属性