我正在寻找以下问题的可能简单的解决方案:
给定一个句子的输入 喜欢
"Absence makes the heart grow fonder."
列出基本单词及其难度/复杂度
[["absence", 0.5], ["make", 0.05], ["the", 0.01"], ["grow", 0.1"], ["fond", 0.5]]
假设 那:
总体思路:
我考虑过使用 Google 搜索或 Wordcount 之类的网站估计可能表明其难度的单词流行度。但是,两种解决方案都会根据输入单词的形式给出不同的结果。 Google 给出了 3.16 亿个喜欢的结果,而 1100 万个喜欢的结果,而 Wordcount 给出了 6k 和 54k 的排名。
将单词转换为其基本形式不是必须的,但可以解决歧义问题(并使创建字典链接变得容易),但这不是一项简单的任务,我觉得它的意义值得商榷。显然,应该用喜欢而不是喜欢,但是调查相信而不是难以置信似乎是一种矫枉过正( [编辑] 这可能不是最好的例子,但是有一个时刻在修改基本词时我们会创建一个新的喜欢 -> 可能)和门卫之类的词不应该被一分为二。
关于什么应该被认为是基本词的一些想法可以找到here on Wikipedia但也许更简单的确定方法是使用字典。例如根据dictionary.reference.com unbelievable is a basic word而fonder comes from fond但后来 grow is not the same as growing
解决方案的想法:
在我看来,处理该问题的最佳方法是使用字典查找基本单词,应用一些 Wikipedia 规则,然后使用 Wordcount(可能与 Google 搜索次数相结合)来估计难度。
尽管如此,可能(可能是更简单和更好的)方法或准备使用算法。我将不胜感激任何解决此问题且易于实现的解决方案。也许我只是想重新发明轮子(或者你知道我的方法会很好用,我在浪费时间思考而不是编写我所拥有的东西)。但是,我宁愿避免实现频率分析算法或准备文本语料库。
最佳答案
一些术语:
s
最后:“我开车”但“他开车”。这些一致的后缀不会改变单词的类别:“drive”是动词,与屈折的“s”无关。另一方面,像“-er”这样的后缀是派生的:它接受一个动词(例如“drive”)并将其变成一个名词(例如“driver”)所以,有了这个术语,对于你的任务来说,最有用的事情似乎是阻止你遇到的每一种形式,即删除所有的屈折词缀,并保留派生词缀,因为派生词缀可以改变这个词的常见程度被认为是。这样想:如果我用英语告诉你一个新单词,你会always know how to make it plural ,第三人称单数,但是,您可能不知道可以从中派生出的其他一些词)。英语是一种缺乏屈折变化的语言,不需要担心很多屈折变化后缀(谷歌搜索很好地去除了它们,所以也许你可以通过谷歌搜索运行你的词表来使用谷歌的词干引擎得到突出显示的结果):
-s
:“我开车”/“他开车”-ed
对于过去式和过去分词(“I walk”/“I walk-ed”/“I had walk-ed”),但有很多不规则的(fall/fell/fallen、dive/dove/dived? , 等等)。也许列出这些? -ing
形式:“步行”/“步行”-er
和最高级-est
.有一些不规则的/补充的(“好”/“更好”/“最好”),但这些不应该是一个大问题。 这些是英语中主要的屈折词缀:我可能忘记了一些你可以通过阅读语言学入门书籍来发现的。还有一些边缘情况,例如“un-”,它是如此混杂,以至于我们可能认为它是屈折的。有关这些类型的更多信息,请参阅 Level 1 vs. Level 2 affixation ,但出于您的目的,我会将这些案例视为衍生案例,而不是阻止它们。
至于“分级”各种词干的常见程度,除了谷歌,您还可以免费获得各种 text corpora .链接到的维基百科文章有一些免费语料库的链接,您可以通过谷歌搜索找到更多链接。从这些语料库中,您可以构建每个词干的频率计数,并使用它来判断形式的常见程度。
关于algorithm - 找到基本单词并估计它们的难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988904/