分类目录归档:NLP

natural language processIing

目前互联网上公布出来的正文提取算法

目前互联网上公布出来的正文提取算法,大家可以综合比较下,一起来测试下哪个更好用。 词网–北京词网科技有限公司http://demo.cikuu.com/cgi-bin/cgi-contex 猎兔网页正文提取 http://www.lietu.com/extract/ PHP版网页正文提取http://www.woniu.us/get_content_demo/ 网页正文提取分析(DEMO) http://61.128.196.27/txt 个人认为http://61.128.196.27/txt 这个提取最牛,基本上无论什么页面都能提取出来,而且能有效的保持原文风格、图片、链接。http://code.google.com/p/joyhtml/
看看这个效果不错
http://www.likeshow.net/article.asp?id=92
我一年前写的玩意 虽然不完善 但尚可用之在新闻和BLOG 论坛提取上 提取的正文对于BLOG和BBS包含评论及回复 具体原理也写很清楚了
如题,想从html源码中提取正文内容,<P></P>之间的内容,但是<P>的写法不规则。除了正则表达式的方法,还有其它的提取方法吗?谢谢!
最新下载
在线演示和最新下载:
http://www.shoula.net/ParseContenthttp://www.pudn.com/downloads152/sourcecode/internet/search_engine/detail668443.html

Google Code开源网页正文提取cx-extractor2010-05-19 12:31基于行块分布函数的通用网页正文抽取:线性时间、不建DOM树、与HTML标签无关
简述:
对于Web信息检索来说,网页正文抽取是后续处理的关键。虽然使用正则表达式可以准确的抽取某一固定格式的页面,但面对形形色色的HTML,使用规则处理难免捉襟见肘。能不能高效、准确的将一个页面的正文抽取出来,并做到在大规模网页范围内通用,这是一个直接关系上层应用的难题。
作者提出了《基于行块分布函数的通用网页正文抽取算法》,首次将网页正文抽取问题转化为求页面的行块分布函数,这种方法不用建立Dom树,不被病态HTML所累(事实上与HTML标签完全无关)。通过在线性时间内建立的行块分布函数图,直接准确定位网页正文。同时采用了统计与规则相结合的方法来处理通用性问题。作者相信简单的事情总应该用最简单的办法来解决这一亘古不变的道理。整个算法实现不足百行代码。但量不在多,在法。
项目网址:http://code.google.com/p/cx-extractor/
算法描述:基于行块分布函数的网页正文抽取算法.pdf
欢迎大家提出意见~

http://www.ngiv.cn/post/204.html
VIPS算法对搜索引擎的意义
http://blog.csdn.net/tingya/archive/2006/02/18/601954.aspx

基于视觉的Web页面分页算法VIPS的实现源代码下载
http://blog.csdn.net/tingya/archive/2006/04/28/694651.aspx
作者信息:飞跃,javascript教程-技术之家博客的博主

http://www.madcn.net/?p=791

我这里有个开源的项目,还不错,你上googlecode搜索joyhtml。
http://gfnpad.blogspot.com/2009/11/blog-post.html
下面几个是一些开源的程序:
1.一个python的基于文本密度的程序:
http://ai-depot.com/articles/the-easy-way-to-extract-useful-text-from-arbitrary-html/
ps:里面有bug,要稍加改动。 另外,对于没有对html注释部分进行处理
2.Java 开源项目: Gate
http://gate.ac.uk/

其实可以利用Dhmtl对象进行编程分析,已获得所要的数据文件,详细请看我的程序
http://www.vbgood.com/thread-94788-1-1.html
http://download.csdn.net/source/568439

一.标题块
l 分块节点:td,div,h,span
l 一般位于Head/Title的位置
l 当前单元含有<h1>-<h3>,<b>,<i>,<strong>等标签
l 样式,一般class包含title,head等字符
l 文字长度,一般大于3个字符,小于35个字符

二.发表时间块
l 分块节点:td,div, span
l 文字长度,一般小于50个字符
l 包含日期格式(2010-08-09)的字符串
l 包含以下关键字:来源,发表

三.主题块
l 分块节点:td,div
l HTML网页中有一些特殊标签,通常只出现在网页主题块中,如<P><BR>等。因此,主题块中往往包含着特殊标签。
l 主题块内容含有较多的句子,因此具有较多逗号、句号等标点符号(>5)。
l 若从信息量角度考虑,主题块一般是含有较多文字信息。
l 主题块的 标签密度=1000*标签数/文字数 应在小于一个范围。
l 主题块的 文本密度=len(文本)/len(HTML代码) 较大
l 不应该包含 “上一篇”,“下一篇”
l 包含以下字符串的内容块,判定为包含版权信息,需减权:“ICP备04000001号”,“版权所有”,“Copyright”
l 主题块序号在标题块之下
l 主题块序号在发表时间块之下
l 主题块序号在相关链接块之上

四.相关链接块
l 分块节点:td,div
l 文字应为“相关链接”、“相关新闻”、“相关报道”等敏感词,且连接比例很高。
l 链接数小于20

实现:
根据以上信息块特征,采用特征提权算法,C#(3.5)编程实现,命名为QD正文提取组件。经测试,对Html格式规范的以文字为主的内容页,正确提取率在85%以上,各大门户的新闻页面在95%以上。 例子下载(需要安装Microsoft .NET Framework 3.5)

注:QD正文提取组件 不开源,需要源码的朋友可选择付费获取。

这时挑选出的正文一般也就是到位了,但是问题是很可能在头尾残留了一些块广告。我认为这些块广告与正文中广告有很大的不同。这些广告的马脚就是其父节点,它们的父节点要么也包含了正文所在区域,也就是和正文平级,要么本身就是正文所在区域的一个子节点,很难是正文节点本身的。那么对疑似正文节点进行一次扫描,剔除那些父节点文字内容过大(包含了广告以及正文,即和正文平级)的块,也剔除那些父节点文字内容过小的块。
经过这样的处理,得到的内容基本上就是我们需要的正文了。下面就是要提取标题。
在代表整个网页的document中扫描一次,寻找那些有font字体的,strong的,h1的,title的节点,提取他们的信息。然后将得到的文字内容分词,查验分出来的词有多少是被正文包含的,包含最多的一半就是标题。但是这里要注意,有时候找到的节点本身是正文节点的子节点,那么无论怎么分,分出来都是完全包含的,所以要剔除那些本身是正文一部分的疑似标题。这样做对大部分网页也是有效了,但是对仅有的标题就在正文节点里的那些页面,目前为止我还没有特别好的想法。
这些日子也研究了一些别人的论文,有很多思想都非常好,也有很多人想到用马尔科夫,人工神经来训练。也许以后我会考虑用用看吧。现在这样也还可以,呵呵。
?
这个算法我也写了一下,不过是用C++写的。
我不太懂楼上讨论的分页是什么意思,我通过分析dom树然后用文中提到的规则进行dom结点处理以及后续的处理。
我主要是想把网页中的内容按网页框架分开,把正文部分合在一起,然后用贝叶斯决策计算正文特征支持率
提取网页内容。
现在VIPS基本写完。
但是却也发现了些问题,
比如说有些结点的坐标提取出来会有提取不出分隔条,这是因为有少数坐标有些重叠。这里涉及到一个坐标的确定问题。
然后是结点分割规则问题,现在的页面是大部分是通过DIV来组织页面。而VIPS似乎更合适TABLE组织的页面,我试过用TABLE组织的页面,分得相当不错。
另外,TINYA上面的翻译似乎改了些规则,还有部分翻译不是很准确。比如虚拟文本的定义部分与原文有些出入,不知道TINYA有没有注意到。
最后,很感谢TINYA 对这个算法的介绍。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tingya/archive/2006/02/18/601836.aspx

中科院分词ICTCLAS5.0 配置错误处理

这个分词器调起来确实让人崩溃,今天想要把包名和dll文件换个路径,结果总是出现这样的问题:
Exception in thread “main” java.lang.UnsatisfiedLinkError: ictclas.NLPIR.NLPIR_Init([BI)Z

各种debug无果,后来发现包名改回kevin.zhang之后程序就好了。。大概是知识产权问题吧~下面转的是一个人总结的别的问题,希望大家少在调试工具上花费太多时间。
错误一:

配置路径如下:

运行ParagraphTest.java出现如下错误

Exception in thread “main” java.lang.UnsatisfiedLinkError: cn.yh.split.ICTCLAS50.ICTCLAS_Init([B)Z

at cn.yh.split.ICTCLAS50.ICTCLAS_Init(Native Method)

at cn.yh.split.Test.main(Test.java:19)

解决办法:

最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。

错误二:

配置文件太多,包括Data和ICTCLAS50.dll等,我想把它放在一个特定的文件夹如ICTCLAS路径下。配置路径如下:

运行ParagraphTest.java出现如下错误

Exception in thread “main” java.lang.UnsatisfiedLinkError: no ICTCLAS50 in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)

at java.lang.Runtime.loadLibrary0(Runtime.java:823)

at java.lang.System.loadLibrary(System.java:1030)

at ICTCLAS.I3S.AC.ICTCLAS50.<clinit>(ICTCLAS50.java:9)

at cn.yh.split.ParagraphTest.main(ParagraphTest.java:9)

解决办法:

很明显,这是由于java.library.path不正确,只需要将导入dll时使用load导入绝对路径即可。修改ICTCLAS50.java里面的System.loadLibrary(“ICTCLAS50”)为 System.load(new File(“”).getAbsolutePath()+”\\ICTCLASConf\\ICTCLAS50.dll”);

修改后运行又出现以下错误:

Init Fail!

Cannot Open Configure file .\Configure.xml

有错误可知,是由于找不到.\Configure.xml文件,需要将配置文件根目录设置为new File(“”).getAbsolutePath()+”\\ICTCLASConf”。在初始化ICTCLAS_Init时,将new File(“”).getAbsolutePath()+”\\ICTCLASConf”.getBytes(“GB2312”)作为参数传递就可以正确运行了。

错误三:

若修改后运行仍然出现错误:

Init Fail!

刷新项目,发现根目录多了一个ICTCLAS.log的文件,打开文件内容,能够得到错误信息:

Default Path : .

start lic check.

License file .\user.lic can not open!

表示还需要user.lic也再根目录下面。将user.lic一道根目录下。

修改后运行在此出现错误:

Init Fail!

重新打开ICTCLAS.log文件,得到错误信息:

Default Path : .

start lic check.

License succeed!Failed to open .\Data\character.idx

Cannot open file .\Data\character.idx.

则表示没有找到Data文件夹,由于我们将Data放在了ICTCLASConf目录,故需要设置Configure.xml的<DataPath>Data</DataPath>//Data文件夹路径一项为指定目录。

Nutch中文分词总结

1 中文分词介绍

中文分词是在做检索类系统时需要重点考虑的一个因素。Nutch的本土化过程也需要更改对中文分词的支持。目前,Nutch中文分词方式大致有两种方式:

一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。

二是编写分词插件。这种方式是按照Nutch定义的插件编写规则重新编写或者添加中文分词插件。

以上两种方式都是可取的。目前,由于开源社区的活跃,已经有很多种分词组件的出现,无论是修改源代码的方式还是编写分词插件的方式,都是依赖于这些分词组件的。下面列出了主要的一些分词组件:

继续阅读

中文语料库整理

中文自然语言处理开放平台

由中国科学院计算技术研究所·数字化室&软件室创立一个研究自然语言处理的一个平台,里面包含有大量的训练测试语料。
语料库:  http://www.nlp.org.cn/docs/doclist.php?cat_id=9&type=15
文本语料库:  http://www.nlp.org.cn/docs/doclist.php?cat_id=16&type=15

sogou文本分类语料库

文本分类语料库来源于Sohu新闻网站保存的大量经过编辑手工整理与分类的新闻语料与对应的分类信息。其分类体系包括几十个分类节点,网页规模约为十万篇文档。
地址:  http://www.sogou.com/labs/dl/c.html

中文Web信息检索论坛

中文Web信息检索论坛(Chinese Web Information Retrieval Forum,简称CWIRF)是由北京大学网络实验室从2004年6月起建立并维护的以大规模中文Web信息为测试集的信息检索研究论坛。

CWT(Chinese Web Test collection, 中文Web测试集):

ComPaper10th
Computer Paper collection with more than 10 thousand papers
CWT70th
     Chinese Web Test collection with 70 thousand pages
     CWT70th顺序读取程序
CWT200g
     Chinese Web Test collection with 200 GB web pages.
     CWT20g_of_200g
     CWT200g样例下载
     CWT200g顺序读取程序

CWT相关工具   

中文网页分类训练集

CCT2006
2006年3月中文网页分类训练集CCT2006, 编号YQ-CCT-2006-03. 根据常见的新闻类别而设定的分类体系,从新闻网站上抓取得到对应 类别的新闻网页作为训练集页面。它包括960个训练网页和240个测试网页, 分布在8个类别中。  下载
CCT2002-v1.1
2002年中文网页分类训练集CCT2002-v1.1, 编号YQ-WEBBENCH-V1.1,  说明 。 是在CCT2002-v1.0 的基础上对类别进行了部分修正. 是2002年秋天北京大学网络与分布式实验室天网小组通过动员不同专业的几十个学生, 人工选取形成了一个全新的基于层次模型的大规模中文网页样本集。 它包括11678个训练网页实例和3630个测试网页实例,分布在11个大类别中。  下载

中文网页分类相关工具
1.中科院自动化所的中英文新闻语料库    http://www.datatang.com/data/13484
中文新闻分类语料库从凤凰、新浪、网易、腾讯等版面搜集。英语新闻分类语料库为Reuters-21578的ModApte版本。

2.搜狗的中文新闻语料库    http://www.sogou.com/labs/dl/c.html
包括搜狐的大量新闻语料与对应的分类信息。有不同大小的版本可以下载。

3.李荣陆老师的中文语料库    http://www.datatang.com/data/11968
压缩后有240M大小

4.谭松波老师的中文文本分类语料    http://www.datatang.com/data/11970
不仅包含大的分类,例如经济、运动等等,每个大类下面还包含具体的小类,例如运动包含篮球、足球等等。能够作为层次分类的语料库,非常实用。

5.网易分类文本数据    http://www.datatang.com/data/11965
包含运动、汽车等六大类的4000条文本数据。

6.中文文本分类语料    http://www.datatang.com/data/11963
包含Arts、Literature等类别的语料文本。

Chinese text processing FAQ 汉语文本处理常见问题及解答

Chinese text processing FAQ 汉语文本处理常见问题及解答

From Corpus4u KnowledgeBase

Jump to: navigationsearch

This FAQ is prepared by Hongying Tao.

  • 分词和汉字之间加空格是一回事吗?
两者不尽相同。分词是以语言的词为单位,汉字之间加空格是以书写符号汉字为单位。
例如:北京是中国的首都。
分词:北京 是 中国 的 首都 。
汉字之间加空格:北 京 是 中 国 的 首 都 。

 

  • 哪些软件可以自动分词?

a) 中科院计算所汉语词法分析系统ICTCLAS
b) Chinese Annotation Tool可在线处理简体汉语文本 Perl 版本
c) 海量智能分词研究版
d) CSW Ver 3.18 中文智能分词, 英文名称:Chinese Split Word 网上演示 软件下载
e) ChineseTA™

 

  • 哪些软件可以自动作编码转换(GB/BIG5/UTF-8/UNICODE=UTF-16)?

a) Multilingual Corpus Tool by Scott Piao, 成批转换
b) WordSmith Tools 4, GB/BIG5 -> UNICODE (UTF-16) 成批转换
c) 南极星 NJ Star 文本转换器, 单个转换
d) Chinese Annotation Tool 可在线处理简体汉语 文本, 单个转换 Perl版本
e) MS Word/Notepad, 单个转换

 

  • 哪些软件可以把汉字文本自动转成汉语拼音文本?

a) 南极星 NJ Star 文本转换器, 单个转换
b) Chinese Annotation Tool 可在线处理简体汉语文本, 单个转换 Perl 版本
c) MS Word (Asian Language Layout), 单个转换

 

  • 哪些软件可以把MS Word文件自动成批转换成ASCII纯文本(.txt)?

a) MS Word“转换向导” 模板 (Batch Conversion Wizard.)
b) WordSmith Tools 4, Text Converter.

 

  • 哪些软件可以把多个纯文本(.txt)文件合并成一个大文件?

a) 文本文件合并器
b) WordSmith Tools 4, File Utilities.

 

  • 哪些软件可以把一个大纯文本(.txt)文件分割成多个文件?

WordSmith Tools 4, File Utilities.

 

  • 哪些软件可以把HTML文件自动成批转换成ASCII纯文本(.txt)?

HTML2TXT

 

  • 如何利用MS Word辅助加码 (mark up, tagging)?

 

  • 如何利用Excel计算各类语词共现数据(T-Score, MI, Z-score)?

 

  • 哪些软件可以进行关键词索引(KWIC concordancing)检索?

经过“分词”处理的汉语纯文本文档可以借助常见的索引工具(concordancer)进行检索。其他的方法有WordConcord. 经过“分字”处理的汉语纯文本文档也可以借助常见的索引工具进行检索,但效果稍差,因为没有词的单位为依据。没有经过“分词”和“分字”处理的汉语文档在进行关键词索引时要么常常出错,要么根本无法进行。

 

  • 有没有不用分词处理便可以进行汉语关键词(KWIC concordancing)检索的软件?

目前见到的不用分词处理便可以进行汉语关键词检索的软件主要是两种:PowerGREP 和 ConcApp北京语言文化大学开发的检索工具。

 

  • 现代汉语通用汉语生语料语言学属性检索统计系统(Chinese Corpus Retriever for Linguistic Attributes)CCRL V1.0

CCRL是国内外第一个可以对汉语生语料进行语言学属性检索的软件,可为语言学研究和语言教学提供有力支持。其特点是: 1、直接检索任何汉语生语料。 2、可进行字串、词串、语言学属性检索,也可以混和检索。 3、检索软件同词库、词的属性体系、词库中词的属性标注皆相互独立。即用户可以创建自己的词库、词的属性体系,自己在词库中进行词的属性标注, 该软件将使用这些数据把用户选定的生语料加工成索引并进行检索。 4、检索方式灵活,检索快速准确,检索结果可按上下文排序。 5、自动进行任何汉语文本的字频、词频统计,词频统计中包括人名、地名、机构明、数字等未登录词的统计。

 

  • What kind of program can we rely on for Chinese ngrams?

AntConc (version 3.1 or above).

 

A Corpus Worker’s Toolkit (ACWT) is a collection of NoteTab clips and Perl scripts for Chinese and English text processing. They can do some quick and dirty corpus/discourse linguistic work for those who can otherwise not afford sophisticated yet expensive commercial software programs. Most of these tools function like macros in word processing programs, but they can do much more and work in a simple text processing environment.