我是NLP领域的新手,但我目前的研究需要从URL地址进行一些文本解析(或称为关键字提取),例如:一个虚假的URL,
http://ads.goole.com/appid/heads
我的解析有两个约束,
-
第一个“广告”和最后一个“头”应该是不同的,因为“头”中的“广告”意味着更多的后缀而不是广告 .
-
“appid”可以解析为两部分;这就是'app'和'id',它们都在互联网中具有语义含义 .
我试过Stanford NLP工具包和谷歌搜索引擎 . 前者试图用语法对每个单词进行分类,这意味着我的期望 . Google引擎显示了更多关于"appid"的智能,它为我提供了有关"app id"的建议 .
我无法查看Google搜索中搜索历史记录的引用,因此它给了我“app id”,因为有很多人搜索过这些词 . 我可以获得一些离线行方法来执行类似的解析吗?
更新:请跳过正则表达式建议,因为即使是简单的URL,也可能有未知数量的单词组合,例如“appid” .
谢谢,
贾敏
2 回答
而不是标记化,它真正想要做的事情称为分词 . 例如,这是一种了解航天的能力的方法 .
我还没有完成整个教程,但这应该可以帮到你 . 他们甚至将网址作为潜在的用例 .
http://jeremykun.com/2012/01/15/word-segmentation/
Python wordsegment module可以做到这一点 . 它是Apache2许可的英文分词模块,用纯Python编写,基于万亿字的语料库 .
基于Peter Norvig撰写的“自然语言语料库数据”一章中的代码“美丽数据”(Segaran and Hammerbacher,2009) .
数据文件来自Google Web万亿字库,由Thorsten Brants和Alex Franz描述,并由语言数据联盟分发 . 该模块仅包含该数据的子集 . unigram数据仅包括最常见的333,000个单词 . 同样,bigram数据仅包括最常见的250,000个短语 . 每个单词和短语都是小写的,删除了标点符号 .
使用
pip
轻松安装:只需拨打
segment
即可获得单词列表:正如你所注意到的那样,旧的语料库确实没问题 . 我们可以轻松地教它 . 只需将其添加到
bigram_counts
字典中即可 .我通过Google搜索"app id"并注意结果数量来选择值
10.2e6
.