一、斯坦福短语抽取工具实现了四个方法来进行短语搭配抽取
(1)基于统计频率数的方法
该方法用于查找长度为2或者3并且连续的短语搭配。因此只处理bigrams和trigrams语料库。对于候选短语集,首先使用预定义的词性序列做一个初步的过滤,将不符合该词性序列的短语组合过滤掉。预定义的词性组合为:
NN_NN
JJ_NN
VB_NN

NN_NN_NN
JJ_NN_NN
NN_JJ_NN
JJ_JJ_NN
NN_IN_NN
然后统计每组短语搭配在语料库中出现的频率和在语料库中具体的位置,最后按照出现的频率排序,取TopN。
如:
Length 2 (<WORD>, <count>):
UNITED STATES, 47
SMALL BUSINESS, 37

Length 3 (<WORD>, <count>):
SMALL BUSINESS CONCERN, 13
SMALL BUSINESS ADMINISTRATION, 9

(2)基于均值和方差的方法
该方法主要用于查找长度为2的非连续的短语词组。对于同一个句子,控制窗口大小为9,然后对于每个词剩余的8个词即为可能与这个词组成词组的词。对于每一个词组,基于语料库,统计第二个词出现时,距离第一个词的距离长度满足一定距离时的次数,然后建立相应的直方图。
使用“flat peak”条件对得到的词组过滤,然后计算符合条件的词组的均值和方差,按方差增加的顺序排列,对于方差相同的词组按频率减少的顺序排列。取top1000用于相似性测试。
如:
Length 2 (<WORD>, <mean>, <variance>, <count>):
UNITED STATES, UNITED, STATES, 1.0, 0.0, 47
OLD MAN, OLD, MAN, 1.0, 0.0, 21
RADIO EMISSION, RADIO, EMISSION, 1.0, 0.0, 16

(3)基于显著性水平t值的方法
该方法用于查找长度为2或者3的连续短语词组,在第一种方法计算出的结果的基础上,计算每个词组的t值,然后按照t值减少的顺序排列。
T的计算公式:

S2表示方差,N表示大小,u表示分配数。
如:
Length 3 (<WORD>, <t_value>, <count>):
SMALL BUSINESS CONCERN, 3.6056123197382504, 13
SMALL BUSINESS ADMINISTRATION, 2.9998899172660995, 9

Length 2 (<WORD>, <t_value>, <count>):
UNITED STATES, 6.8303675830354, 47
SMALL BUSINESS, 5.987962457983314, 37

(4)基于卡方检验(Chi-square)的方法
该方法用于查找长度为2的连续短语词组。在第一种和第三种方法计算出结果的基础上,计算词组的卡方值,然后按照结果的递减顺序排列。

观察次数减去理论次数的平方除以理论次数。
fi代表观察次数,npi代表理论次数。
如:
Length 2 (<WORD>, <chi-square_value>, <count>):
UNITED STATES, 6823.207158142358, 47
POST-ATTACK RECONNAISSANCE, 5789.036633730465, 4
SURFACE-ACTIVE AGENT, 5206.106140377071, 6

CollocationFinder.java位于edu.stanford.nlp.trees目录下。
CollocationFinder.java:
功能:基于WordNet和词性以及各层次句法之间的关系进行短语搭配提取。
算法主要思想:对每句话的句法分析树的所有子树,进行短语搭配,然后将搭配的短语词组跟wordnet中的语料比较,若该词组在语料中则为提取出的词组。
调用的外部类有:Generics类、WordTag类等
主要方法:getCollocationsList(Tree t):遍历斯坦福句法分析得到的句法分析树,提取的结果保存在:collocationCollector中,格式是word1_word2_word3(index1,index2)
实现过程:
1.使用getChildrenAsList()函数获取句法树的所有子树。
2.对每一个子树,根据词性以及获取词的形态判断哪些词是形近词,形近词判断函数:Morphology.stemStatic()。把形近词存到同一个List中。剩下的非形近词存到一个List中。在treeAsStemmedCollocation函数中把提取出的形近词转化为word1_word2_word3格式。
3.在wordNet中查找是否存在该短语词组。
部分方法:
treeAsStemmedCollocation(Tree t):返回每个子树对应的短语词组。

getStemmedWordTagsFromTree(Tree t):返回词和词的POS标记。

二、NLTK工具实现的短语词组提取源码理解

Collocations.py:基于语料库,首先计算词语频率和该词语跟其他词语的上下文关系。并对句子内容做过滤操作,只留下有用的内容。建立N-gram Model,然后对每个词的N元模型根据相关规则进行打分,根据打分的结果确定这些相近的词组成词组的可能性。测量方法使用Church and Hanks的测量方法。

class AbstractCollocationFinder:基于N-gram Model识别搭配,主要用于计算n个词搭配得分。收集候选搭配在ngram语料库中的频率、对一些不符合条件的词过滤以及对模型搭配结果排名。

通过nltk.probability.FreqDist对象或相同功能的接口获得每个单词在语料库中的频率和元组的联合频率。其中的ngram_fd返回n个词搭配后的得分。

class BigramCollocationFinder:基于Bigram(二元模型)词语搭配查找和排序。对non-contiguous bigrams(非连续bigram做了处理)。窗口大小为2。其中的bigram_fd返回两个词搭配后的得分。分别计算一个词的频率和两个词组合一起出现的频率。

class TrigramCollocationFinder:基于Trigram(三元模型)词语搭配查找和评分结果排序。对两个词中间出现的词是否与这两个词构成搭配做了处理。窗口大小为3。分别计算了一个词,任意两个词,三个词出现的频率。

class QuadgramCollocationFinder:基于Quadgram(四元模型)词语搭配查找和排序。对四个任意搭配的词语做了处理。窗口大小为4。分别计算了一个词,任意两个词,任意三个词和四个词出现的频率。

其中三元模型和四元模型会涉及到非连续的情况。

总体来说,斯坦福短语抽取工具基于句法分析的结果生成预选搭配集合,NLTK基于窗口长度生成预选搭配集合。然后将获得的预选短语与语料库进行比较,得出这些短语搭配在语料库中出现的频率值,进一步对频率做处理。根据计算结果返回短语词组。

斯坦福和NLTK英语短语词组抽取工具原理及源码理解相关推荐

  1. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  2. 微信小程序:升级版手机检测微信工具小程序源码

    这是一款升级版检测工具 自动检测手机真伪,序列号等等 另外还可以给手机检测各项功能是否正常 由于能检测的项目太多,所以大家到时候自行研究吧 小编就不多做介绍 另外支持多做流量主模式,比如激励视频,ba ...

  3. 二维码图片生成工具C#winform源码

    二维码图片生成工具C#winform源码 源码描述: 一.源码特点 采用winform进行开发,生成二维码并保存,欢迎下载 二.功能介绍 本源码是一个可以自动生成二维码图片的小模块,可以添加自己的lo ...

  4. 网站SEO报告和代码工具平台系统源码

    简介: 网站SEO报告和代码工具平台系统源码 国外版本 需汉化 全面的 SEO 报告平台,可让您生成有见地.简洁且易于理解的 SEO 报告,这将有助于您的网页排名和性能更好. PHP 脚本功能: SE ...

  5. Windows CE/Moblie截屏工具及实现源码

    Windows CE/Moblie截屏工具及实现源码 [img]http://dl2.iteye.com/upload/attachment/0084/6997/c72941f2-b86e-3683- ...

  6. WebBench压力测试工具(详细源码注释+分析)

    WebBench压力测试工具(详细源码注释+分析) 本文适合人群:对WebBench实现感兴趣的人 WebBench原理: Linux下使用的服务器压力测试工具,利用fork建立多个子进程,每个子进程 ...

  7. yt88加密狗不识别_YT88 是天域一个很不错的加密狗工具,可以源码 ,还 外壳 ,带DLK开发包。 Windows Develop 256万源代码下载- www.pudn.com...

    文件名称: YT88下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Windows_Unix 文件大小: 12909 KB 上传时间: 2016-05-01 下载次数: 0 提 供 ...

  8. JAVA毕业设计英语学习网站设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计英语学习网站设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计英语学习网站设计与实现计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S ...

  9. 最新检讨书生成工具小程序源码+支持流量主

    正文: 最新检讨书生成工具小程序源码+支持流量主,对于经常写检讨的小伙伴来说,福音来了,因为这是一款检讨书生成小程序,所以再也不用为了写检讨而烦恼了哦. 支持自定义字数下线,主题自定义,支持多种类型检 ...

最新文章

  1. SPS2003升级MOSS2007时SSO部件错误解决
  2. wxWidgets:wxDatePickerCtrl类用法
  3. 在xcode上把你的app多语言国际化(NSLocalizedString)
  4. P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
  5. Intent Bundle页面跳转信息的传递
  6. asp上传错误:此键已与该集合的一个元素关联
  7. 继承类对方法的影响java_4-Java面向对象-继承(上)
  8. django国际化与html语言,Django 国际化
  9. (一)STL体系结构基础介绍
  10. DOS 下编写带有日期的脚本例子
  11. 处理中文乱码以及登陆验证的过滤器Filter(建议收藏)
  12. 《HiWind企业快速开发框架实战》(2)使用HiWind创建自己的项目
  13. 汇编常用DOS命令调用
  14. Hive sql 行列转换(行转列,列转行)
  15. 有感于《成都私车数量超上海》
  16. 微信小程序-tab标签栏实现教程
  17. 位置度标注方法图解_新整理!安装工程施工图解手册,多彩文字标注现场图片,一看就懂...
  18. 王开岭《精神明亮的人》|灵魂的萤火
  19. 采用CAD刀模插件(飞狼刀模工具箱)批理倒圆角
  20. 《游梦人·诗的诞生》

热门文章

  1. spreadjs导出学习总结
  2. 算法基础课【合集2】
  3. java 双向链表排序_数据结构之(2)JAVA实现双向链表
  4. 绝了!毕业10年年薪百万,今天总结一下我都学了什么!
  5. 致远项目管理SPM系统之控制预算变更
  6. matlab dmc控制代码,【原创】Matlab实现DMC控制加热炉程序
  7. BloomFilter--理解总结
  8. 自嗨模式计算机,关于自嗨模式的说说
  9. ip话机 mitel_ip电话机如何使用
  10. WebRTC音视频原理