【问题标题】:Does NLTK provide a lib to measure vocabulary ordinary level?NLTK 是否提供一个库来衡量词汇普通水平?
【发布时间】:2020-02-23 03:29:40
【问题描述】:

NLTK 或任何其他 NLP 工具是否提供了一个库来衡量词汇普通水平?

在普通级别,我的意思是某些单词很简单,并且使用频率更高,例如“and, age, yes, this, those, kind”,任何小学生都必须知道。与朗文英语词典(通常用于 ESL)类似,定义了一个 3000 字的基本词汇表,用于解释所有条目。

可能有一组稀有词属于稀有使用级别,仅用于迂腐用途,如 Agastopia、Impignorate、Gobbledygook 等。

在这两个极端之间肯定有一些水平。当然,这个级别的定义纯粹是主观的,我希望不同的组织或个人可能有不同的看法。至少它可能因地区而异。

我的目的是通过检查其词汇量来衡量某些段落的难度/复杂性,目前还很天真。

“普通水平”可能不是很好的描述,但我找不到合适的正式表达方式:)。我希望我的解释能阐明我的目的。

【问题讨论】:

    标签: nltk vocabulary


    【解决方案1】:

    解决这个问题的一种经验方法是在大量文档中使用词频。 使用大部分英文维基百科,我创建了一个词频词典 (which can be downloaded here)

    import pickle
    with open('/home/user/data/enWikipediaDictTermCounts.pickle', 'rb') as handle:
        d = pickle.load(handle)
    
    #common words will have high counts (they appear many times in wikipedia):
    
    d.get('age',0)
    #207669
    d.get('kind',0)
    #62302
    
    #rare words will have low counts:
    
    d.get('agastopia',0)
    #1
    d.get('gobbledygook',0)
    #39
    d.get('serendipitous',0)
    #186
    

    稀有词出现的次数少于 500 次,而常见的词出现的次数超过 10K 次。您可以使用这些阈值来为您的应用程序找到合适的稀有度(分别是常见度)。
    备注:注意字典中所有单词都转为小写

    【讨论】:

    • 这是一个很好的解决方案!感谢 DBaker! get() 中的第二个参数是什么意思?
    • 其中可能缺少一点是处理词的变形,例如旅行,旅行,旅行,旅行。但我想这可以通过其他 NLP 工具来解决。
    • get() 的第二个参数是默认值,如果该单词不在 python 字典中,则返回该参数。字典中也应该出现诸如traveling和traveled之类的共轭动词。顺便说一句,如果你喜欢,请点赞并接受我的回答:)
    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多