跳转到主要内容

DetectorMorse,一个句子分割器

项目描述

Detector Morse

Detector Morse是一款用于句子边界检测(以下简称SBD)的程序,也称为句子分割。考虑以下句子,来自宾州树库的《华尔街日报》部分:

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

这个句子包含4个句号,但只有最后一个表示句子边界。在U.S.中的第一个句号明确是首字母缩略词的一部分,而不是句子边界;同样,$12.53这样的表达式也是如此。但Inc.U.S.结尾的句号很容易表示句子边界。人类通过局部上下文来确定,这两个句号都不表示句子边界(例如,如果U.S.之后立即有一个句子边界,动词expect的选择性属性就不满足)。Detector Morse使用手工制作、精心设计的上下文特征和低影响、无痕迹的机器学习方法来自动检测句子边界。

SBD是许多自然语言处理管道中最早的部分之一。由于此步骤的错误可能会传播,因此SBD是自然语言处理中一个重要但被忽视的问题。

Detector Morse已在CPython 3.4和PyPy3(2.3.1,相当于Python 3.2)上进行了测试;后者速度更快。Detector Morse依赖于Python模块nlup(它反过来依赖于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)时,DetectorMorse简单地在新预测的句子边界之后插入换行符,这些边界尚未由换行符标记。所有其他换行符都通过,未受干扰。

包含的DM-wsj.json.gz是在宾州树库的《华尔街日报》部分上训练的分割器模型。可以使用detector.default_model()或通过在命令行中指定不带路径的-r来加载此模型。

方法

参见这篇博客文章

注意事项

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

激动人心的额外功能!

我包含了一个Perl脚本untokenize.pl,该脚本试图逆转宾州树库标记化过程。标记化是一个本质上是“有损”的过程,因此无法保证输出与WSJ中的内容完全一致。但是,规则似乎正确,并能生成合理的文本,我已经将它用于所有实验。更新(2015-02-10):我已经删除了这个脚本;现在我只是使用斯坦福标记化器来完成这个目的。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源分发

DetectorMorse-0.4.1.tar.gz (337.0 kB 查看哈希

上传时间

由以下组织支持