创建解析器
项目描述
parserator
一个用于制作特定领域概率解析器的工具包
你有没有特定领域的文本数据,如果能够从中提取结构将非常有用?这个工具包将帮助你创建一个定制的NLP模型,该模型从真实数据中的模式中学习,然后使用这些知识来自动处理新的字符串。你所需要的只是一些训练数据来教你的解析器关于其领域。
概率解析器做什么?
给定一个字符串,概率解析器会将它分解成带有标签的组件。解析器使用条件随机场来根据(1)组件字符串的特征和(2)标签的顺序对组件进行标记。
何时使用概率解析器?
概率解析器特别适用于具有共同结构/模式的字符串集合,但它们在难以用硬编码规则预测的方式上偏离这些模式。
例如,在大多数情况下,美国的地址以门牌号为开头。但也有例外:有时有效的美国地址会偏离这种模式(例如,以建筑物名称或邮政信箱开头的地址)。此外,真实数据集中的地址通常包含拼写错误和其他错误。由于需要考虑的图案和可能的错误是无限的,因此概率解析器非常适合解析美国地址。
采用概率解析器(而不是基于规则的解析方法),解析器可以从新的训练数据中不断学习,从而不断提高其性能!
以下是一些概率解析器可能有用的领域
- 其他国家不熟悉的地址
- 产品名称/描述(例如,将“Twizzlers Twists, Strawberry, 16-Ounce Bags (Pack of 6)”这样的短语解析为品牌、项目、口味、重量等)
- 学术写作中的引用
解析器的示例
- usaddress - 我们的第一个概率解析器,也是解析器工具包的基础,它可以解析美国境内的任何地址。阅读我们关于其工作原理的博客文章。
- probablepeople - 罗马化人名解析器。
在我们的Web界面上尝试这些解析器!
如何制作解析器 - 快速概述
有关每个步骤的更多详细信息,请参阅解析器文档。
-
初始化新的解析器
pip install parserator parserator init [YOUR PARSER NAME] python setup.py develop
-
将解析器配置到您的领域
- 配置标签(即标记的令牌的可能标签集)
- 配置标记化器(即如何将原始字符串分割成一系列要标记的令牌)
-
定义与您的领域相关的特征
- 定义令牌级特征(例如,长度、大小写)
- 定义序列级特征(例如,令牌是否是序列中的第一个令牌)
-
准备训练数据
- Parserator以XML格式读取训练数据
- 要从CSV文件中的未标记字符串创建XML格式的训练数据输出,请使用parserator的命令行界面手动标记令牌。它使用第一列的值,并忽略其他列。要开始标记,运行
parserator label [infile] [outfile] [modulename]
- 例如,
parserator label unlabeled/rawstrings.csv labeled_xml/labeled.xml usaddress
-
训练您的解析器
- 要使用您的标记训练数据训练解析器,请运行
parserator train [traindata] [modulename]
- 例如,
parserator train labeled_xml/labeled.xml usaddress
或parserator train "labeled_xml/*.xml" usaddress
- 训练后,您的解析器将有一个更新的模型,以.crfsuite设置文件的形式
- 要使用您的标记训练数据训练解析器,请运行
-
如有需要,请重复步骤3-5!
如何使用您的新解析器
一旦您能够从训练数据中创建模型,请通过运行python setup.py develop
安装您的自定义解析器。
然后,在Python shell中,您可以导入您的解析器并使用parse
和tag
方法处理新的字符串。例如,要使用probablepeople模块
>>> import probablepeople
>>> probablepeople.parse('Mr George "Gob" Bluth II')
[('Mr', 'PrefixMarital'), ('George', 'GivenName'), ('"Gob"', 'Nickname'), ('Bluth', 'Surname'), ('II', 'SuffixGenerational')]
重要链接
- 文档:http://parserator.rtfd.org/
- 尝试解析器的Web界面:http://parserator.datamade.us/
- 博客文章:http://datamade.us/blog/parse-name-or-parse-anything-really
- 仓库:https://github.com/datamade/parserator
- 问题:https://github.com/datamade/parserator/issues
- 分发:https://pypi.python.org/pypi/parserator
团队
- Forest Gregg,DataMade
- Cathy Deng,DataMade
错误和虫子
如果某个功能不符合直观预期,它就是一个bug,应该报告。报告一个问题。
补丁和拉取请求
我们欢迎您的想法!您可以通过GitHub问题(bug报告、功能请求、一般疑问)提出建议,或者通过拉取请求提交代码贡献。
如何贡献代码
- 分支项目。
- 添加您的功能或修复bug。
- 给我们发送一个带有您工作描述的拉取请求!不要担心它不完美:将PR视为对话的开始,而不是一个成品。
版权和归属
版权(c)2016 DataMade。在MIT许可证下发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。