首页 文章

NLP中的英文单词分词?

提问于
浏览
3

我是NLP领域的新手,但我目前的研究需要从URL地址进行一些文本解析(或称为关键字提取),例如:一个虚假的URL,

http://ads.goole.com/appid/heads

我的解析有两个约束,

  • 第一个“广告”和最后一个“头”应该是不同的,因为“头”中的“广告”意味着更多的后缀而不是广告 .

  • “appid”可以解析为两部分;这就是'app'和'id',它们都在互联网中具有语义含义 .

我试过Stanford NLP工具包和谷歌搜索引擎 . 前者试图用语法对每个单词进行分类,这意味着我的期望 . Google引擎显示了更多关于"appid"的智能,它为我提供了有关"app id"的建议 .

我无法查看Google搜索中搜索历史记录的引用,因此它给了我“app id”,因为有很多人搜索过这些词 . 我可以获得一些离线行方法来执行类似的解析吗?

更新:请跳过正则表达式建议,因为即使是简单的URL,也可能有未知数量的单词组合,例如“appid” .

谢谢,

贾敏

2 回答

  • 7

    而不是标记化,它真正想要做的事情称为分词 . 例如,这是一种了解航天的能力的方法 .

    我还没有完成整个教程,但这应该可以帮到你 . 他们甚至将网址作为潜在的用例 .

    http://jeremykun.com/2012/01/15/word-segmentation/

  • 1

    Python wordsegment module可以做到这一点 . 它是Apache2许可的英文分词模块,用纯Python编写,基于万亿字的语料库 .

    基于Peter Norvig撰写的“自然语言语料库数据”一章中的代码“美丽数据”(Segaran and Hammerbacher,2009) .

    数据文件来自Google Web万亿字库,由Thorsten Brants和Alex Franz描述,并由语言数据联盟分发 . 该模块仅包含该数据的子集 . unigram数据仅包括最常见的333,000个单词 . 同样,bigram数据仅包括最常见的250,000个短语 . 每个单词和短语都是小写的,删除了标点符号 .

    使用 pip 轻松安装:

    $ pip install wordsegment
    

    只需拨打 segment 即可获得单词列表:

    >>> import wordsegment as ws
    >>> ws.segment('http://ads.goole.com/appid/heads')
    ['http', 'ads', 'goole', 'com', 'appid', 'heads']
    

    正如你所注意到的那样,旧的语料库确实没问题 . 我们可以轻松地教它 . 只需将其添加到 bigram_counts 字典中即可 .

    >>> ws.bigram_counts['app id'] = 10.2e6
    >>> ws.segment('http://ads.goole.com/appid/heads')
    ['http', 'ads', 'goole', 'com', 'app', 'id', 'heads']
    

    我通过Google搜索"app id"并注意结果数量来选择值 10.2e6 .

相关问题