将域名拆分为组成单词(如果可能)?

时间:2010-07-28 03:43:06

标签: nlp algorithm dynamic-programming np-complete

我想将域名分解为组成单词和数字,例如

iamadomain11.com = ['我','我','a','域','11']

我该怎么做?我知道可能有多套可能,但是,我现在甚至还可以,只是获得一组可能性。

3 个答案:

答案 0 :(得分:3)

这实际上是在O'Reilly Media的书中解决的Beautiful Data。在第14章“自然语言语料库数据”中,他创建了一个分离器,可以使用巨大的免费令牌频率数据集在Python中完全按照您的需要进行操作。

答案 1 :(得分:1)

这是一个有趣的问题!首先你需要一本字典。出于性能原因,将其存储在一个hashset中(可能在python中使用字典类型)。然后,您可以迭代每个可能的字符串,(“i”,“ia”,“iam”,...“n11”,“1”,“11”,“1”)并检查字典中的匹配项。然后,这是迭代这些匹配的问题,直到你有一个没有重叠的连续集。

这将是一个快速和肮脏的。可能有更快的方法来实现这一目标。

答案 2 :(得分:1)

这听起来类似于中文标记的问题,中文之间没有空格。本段摘自Manning,Raghavan等人的“信息检索简介”。 Schütze,可在线获取here

  

这种现象达到极限   主要的东亚语言(例如,   中文,日文,韩文和泰文),   没有任何文字的地方   单词之间的空格。 [...]一种方法   这里是执行分词   作为先前的语言处理。   分词方法有所不同   拥有大量的词汇和服用   最长的词汇与一些相匹配   对于未知单词的启发式方法   使用机器学习序列   模型,如隐马尔可夫模型   或条件随机字段,经过培训   手工分割的单词

我建议将贪婪的词典匹配作为第一步,然后添加启发式算法来处理最常见的失败案例。