我有一些句子,如:美国,钥匙圈,
我希望将所有句子分成空格,但要聪明地分开, 美国成为:"联合国" "状态" "美国" 带戒指的钥匙:"钥匙" "带戒指" 北京女王:"女王" "北京"
我们在java / clojure / scala中是否有一些用于此类拆分的库? 或者任何算法都可以帮助解决这个问题。
答案 0 :(得分:3)
据我所知,没有现成的库可以执行此操作。但是,有一种简单的方法可以实现目标!
首先,我们需要知道 功能词 ,它们没有太多的语义含义,但对于语法和结构关系很重要。一些功能词是“of”,“about”,“my”等。有关详细信息,请参阅以下资源:
维基百科页面还有一个外部链接,您可以从中下载英文功能词列表。
获得该列表后,我们可以简单地使用普通的分词器,然后将一个单词 w_k 与以下单词 w_(k + 1)结合使用 w_k 是一个功能词。这种方法将取得以下结果:
对于更复杂的单词分组,我们需要超越“分裂”,并冒险进入浅层分析领域。在这种情况下,特别是短语分块可能非常有用。例如,考虑一下美利坚合众国的资本,如上所述的单词分裂将产生“资本”,“联合”,“国家”,“美国”......这可能是不可取。另一方面,短语分块将产生
[Capital] [of] [the United States] [of] [America]
现在,我们可以将介词(如果需要)加入到后续短语中以获取
[Capital] [of the United States] [of America]
Univ的认知计算小组提供了一个好的短语分块程序。伊利诺伊州厄巴纳 - 香槟分校,包括online demo。