概述:
前段时间,听一个在某公司实习的同学说他现在做的东西是基于短语级的文章标签自动抽取。听起来感觉还挺有趣。具体详细的算法我不太了解,但他说他们是基于热门搜索词汇(短语)的标签自动抽取,即通过匹配热门词汇中的词汇来抽取一篇文章的标签。感觉该方法虽然也可以实习短语级的标签抽取,但且没有体现NLP技术在工业界的实际应用,且抽取结果很大程度上受限于该热门词汇表。
我无聊时,在linux下编写了一个基于chunk的短语级标签自动抽取程序,把汉语chunk技术应用到标签自动抽取中。
前言:
目前互联网上大部分的文章标签抽取还是基于词汇的,就是用词汇来作为一篇文章的标签。目前大概有两种基于词的标签抽取方法,一种是对标题进行标签抽取(如51cto博客),一种是基于文章内容的标签自动抽取。基于内容的标签自动抽取,一般是基于热门词汇匹配或者计算文章中词的TF或者TF-IDF。把权重最大的前几个作为标签。
如果现在有两篇文章,一篇是关于“南非世界杯”的,一篇是关于“德国世界杯”的,基于词的标签抽取技术,会把“世界杯”当成这两篇文章的标签。但这样我们就无法很好的从标签里面区别去这两篇文章。基于词的标签无法更贴切的表征一篇文章。如果基于短语级的标签的话,那么这两篇文章分别识别为“南非世界杯”和“德国世界杯”。这样我们从标签中就可以更加直接的了解到这两篇文章的主题。
相关技术:
1.中文分词和词性标注
2.chunk识别。
2.1基于CRF的chunk识别。
采用的语料是来自港大的语料库,用CRF++进行模型标注。
2.2基于Yamcha的chunk识别
yamcha是一个有名的英文chunk开源工具,主要是基于SVM。好像是参加CoNLL2000 shared task 时某科研院校开发的。
3.热门词汇匹配(这个热门词汇获取比较麻烦,最方便的做法是获取百度搜索风云榜的热门搜索词)。
4.chunk权重。通过计算chunk的频率和chunk中词汇的频率,得到一个chunk的权重。提取权重最大的前几个chunk作为标签。
结论:
中文chunk识别是目前是中文信息处理领域一个热门的研究方向,有这广泛的应用。本例子就是一个chunk的实际应用例子。
标签抽取还有很多算法。这是一个有趣的topic.
if you are interest in this topic, welcome to cantact me to discussion, you are welcome.
(jpshen2008#$gmail.com)
https://blog.51cto.com/pingpeace/346472