我想将域名分解为组成词和数字,例如
iamadomain11.com = ['i', 'am', 'a', 'domain', '11']
我该怎么做呢?我知道可能有多组可能,但是,我目前还可以,只获得一组可能性。
我想将域名分解为组成词和数字,例如
iamadomain11.com = ['i', 'am', 'a', 'domain', '11']
我该怎么做呢?我知道可能有多组可能,但是,我目前还可以,只获得一组可能性。
这实际上在 O'Reilly Media 的书Beautiful Data中得到了解决。在第 14 章“自然语言语料库数据”中,他使用一个巨大的免费令牌频率数据集创建了一个拆分器,可以在 Python 中完全按照您的意愿行事。
这听起来类似于标记中文的问题,其中单词之间没有空格。本段摘自 Manning、Raghavan 和 Schütze 的“Introduction to Information Retrieval”,可在此处在线获取:
这种现象在主要的东亚语言(例如,中文、日文、韩文和泰文)中达到了极限情况,在这些语言中,文字之间没有任何空格。[...] 这里的一种方法是执行分词作为先前的语言处理。分词的方法多种多样,从拥有大量词汇并采用一些启发式方法对未知词进行最长的词汇匹配,到使用机器学习序列模型,例如隐藏马尔可夫模型或条件随机场,对手工分割的词进行训练
我建议将贪婪字典匹配作为第一步,然后添加启发式方法来处理最常见的失败案例。
这是一个有趣的问题!首先你需要一本字典。出于性能原因,将其存储在哈希集中(可能可以使用 python 中的字典类型)。然后,您可以遍历每个可能的字符串(“i”、“ia”、“iam”、...“n11”、“1”、“11”、“1”)并检查字典中的匹配项。然后就是迭代这些匹配,直到你有一个没有重叠的连续集合。
这将是快速而肮脏的。可能有更快的方法来做到这一点。