我想将域名分解为组成单词和数字,例如
iamadomain11.com = ['我','我','a','域','11']
我该怎么做?我知道可能有多套可能,但是,我现在甚至还可以,只是获得一组可能性。
答案 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:
这种现象达到极限 主要的东亚语言(例如, 中文,日文,韩文和泰文), 没有任何文字的地方 单词之间的空格。 [...]一种方法 这里是执行分词 作为先前的语言处理。 分词方法有所不同 拥有大量的词汇和服用 最长的词汇与一些相匹配 对于未知单词的启发式方法 使用机器学习序列 模型,如隐马尔可夫模型 或条件随机字段,经过培训 手工分割的单词
我建议将贪婪的词典匹配作为第一步,然后添加启发式算法来处理最常见的失败案例。