刑侦官,分词器

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第三方库


热门话题
爪哇太阳报。安全验证器。ValidatorException:PKIX路径生成失败   java理解为什么在onDispatchTouchEvent()返回True后仍调用onClick()   java如何在资源包中使用JSF标记/如何在资源包中重写URL?   java什么是流控制异常的替代方案?   java使用Spring数据JPA/MongoDB交叉存储,一个查询可以跨越两个数据库吗?   Apache Sling/felix中的java OSGi slf4j日志记录   为什么当我们想要水平/垂直旋转矩阵时,我们要把这个项除以2?   尝试从外部网页接收JSON字符串时出现安卓 Java NullPointerException   java执行异常:从Callable调用方法时   java在jetty上以调试模式运行webapp,使用maven jetty插件在intellij中构建成功(应用程序应在调试模式下启动)   带有内存数据库的linux Java应用程序的构建时间太长   基于java的随机数单元测试算法   java类型javax。摆动JComponent无法解析   Google日历API和UI小部件Java   java tomcat没有突然和任意地响应   java无法使用jsoup在html中获取图像src   我无法让Java接受键盘输入字符串   java如何开始使用Bambol而不让部署永远继续?   java如何使用另一个类的actionPerformed方法删除一个类/组件中的按钮?   java JSON反序列化brakets{}中的一系列对象