如何对字典中的单词进行自动分类?

Posted

技术标签:

【中文标题】如何对字典中的单词进行自动分类?【英文标题】:How to automatically classify words in the dictionary? 【发布时间】:2011-08-11 18:45:12 【问题描述】:

我有一个大字典文件 dic.txt(实际上是SOWPODS),每行一个英文单词。我想自动将此文件拆分为 3 个不同的文件 easy_dic.txt(我们每天使用的最常见的单词 - 16 岁的词汇),medium_dic.txt(不太常用但仍然为许多人所知的单词 - 知识一个 30 岁的减去在 easy_dic.txt 中找到的单词),hard_dic.txt(只有专业拼字游戏玩家会知道的非常深奥的单词)。实现此目的最简单的方法是什么(您可以使用互联网上的任何资源)?

【问题讨论】:

相当开放。仅使用字典文件是不可能的。 好吧,显然您可以使用互联网上的任何可用资源。我想知道是否有任何可用的 API。我不认为这个问题是开放式的,很清楚需要做什么。 @Oded 也许你是对的,但是这个问题很有趣,并且有很多有用的结果。在尝试制作一个模块来为拼写错误的单词生成建议时,我遇到了同样的问题。通过推荐最常用的单词(在一定的编辑距离区间内),软件的猜测能力大大提高。 @belisarius - 是的,我的用例是一个类似拼字游戏的游戏,有 3 个难度级别,其中 AI 在更高的难度级别使用更多深奥的单词。 在你的算法中加入一个 16 岁、30 岁和专业的拼字游戏玩家! 【参考方案1】:

Google 拥有正确的工具 :),并共享其数据库!

Ngram viewer 是一个工具,用于检查和比较文字在文学、杂志等中出现的频率。

您可以从here 下载数据库并训练您的字典。

HTH!

顺便说一句,该工具的使用和发现单词的出生和消失日期非常有趣。

【讨论】:

要添加到这个答案中,您可能需要查看该页面上的 unigrams 列表。对于截断,您可以采用您认为容易的边界、边界中等和边界模糊的内容,找到这些单词的计数,然后通过对这些计数设置阈值来列出列表【参考方案2】: 拿一些以计算机可读形式提供的书籍(最好来自您的三个类别)。 为这些书中的所有单词创建直方图。 合并每个类别中所有书籍的直方图。 在处理您的字典时,检查单词在哪个类别的直方图中的计数最高,并将该单词放在该类别中。

除了最后一步,您还可以简单地处理直方图并从所有直方图中删除一个单词,除了命中率最高的那个。那么你已经有了一个单词列表,而无需使用外部字典文件。

【讨论】:

【参考方案3】:

下载 Wikipedia dump,使用一些 Lingpipe 工具(优化数据结构)学习词频。检查字典频率分布中的单词,然后将它们分成 3 组。

【讨论】:

以上是关于如何对字典中的单词进行自动分类?的主要内容,如果未能解决你的问题,请参考以下文章

技巧114 使用字典中的单词进行自动补全

我如何根据姓名、数字、金钱、日期等对文本中的单词进行分类?

店内商品自动分类,可以吗?

通过删除字母匹配到字典里最长单词--双指针or自动机预处理?

Kattis - nvwls (AC自动机last优化 + dp)

暖*墟 #AC自动机# 多模式串的匹配运用