什么是ngram计数以及如何使用nltk实现?

发布于 2021-01-29 18:07:20

我读过一篇使用ngram计数作为分类器功能的论文,我想知道这到底意味着什么。

示例文本:“ Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam”

我可以根据本文创建单字组,双字母组,三字组等,在这里我必须定义在哪个“级别”上创建这些单字组。“级别”可以是字符,音节,单词,…

那么从上面的句子中创建字母组合会简单地创建所有单词的列表吗?

创建二元组会导致单词对将彼此跟随的单词组合在一起?

因此,如果本文讨论的是ngram计数,它只是从文本中创建unigram,bigrams,trigrams等,并计算哪个ngram出现的频率?

python的nltk包中是否存在现有方法?还是我必须实现自己的版本?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我发现了我的旧代码,也许有用。

    import nltk
    from nltk import bigrams
    from nltk import trigrams
    
    text="""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ornare
    tempor lacus, quis pellentesque diam tempus vitae. Morbi justo mauris,
    congue sit amet imperdiet ipsum dolor sit amet, consectetur adipiscing elit. Nullam ornare
    tempor lacus, quis pellentesque diam"""
    # split the texts into tokens
    tokens = nltk.word_tokenize(text)
    tokens = [token.lower() for token in tokens if len(token) > 1] #same as unigrams
    bi_tokens = bigrams(tokens)
    tri_tokens = trigrams(tokens)
    
    # print trigrams count
    
    print [(item, tri_tokens.count(item)) for item in sorted(set(tri_tokens))]
    >>> 
    [(('adipiscing', 'elit.', 'nullam'), 2), (('amet', 'consectetur', 'adipiscing'), 2),(('amet', 'imperdiet', 'ipsum'), 1), (('congue', 'sit', 'amet'), 1), (('consectetur', 'adipiscing', 'elit.'), 2), (('diam', 'tempus', 'vitae.'), 1), (('dolor', 'sit', 'amet'), 2), (('elit.', 'nullam', 'ornare'), 2), (('imperdiet', 'ipsum', 'dolor'), 1), (('ipsum', 'dolor', 'sit'), 2), (('justo', 'mauris', 'congue'), 1), (('lacus', 'quis', 'pellentesque'), 2), (('lorem', 'ipsum', 'dolor'), 1), (('mauris', 'congue', 'sit'), 1), (('morbi', 'justo', 'mauris'), 1), (('nullam', 'ornare', 'tempor'), 2), (('ornare', 'tempor', 'lacus'), 2), (('pellentesque', 'diam', 'tempus'), 1), (('quis', 'pellentesque', 'diam'), 2), (('sit', 'amet', 'consectetur'), 2), (('sit', 'amet', 'imperdiet'), 1), (('tempor', 'lacus', 'quis'), 2), (('tempus', 'vitae.', 'morbi'), 1), (('vitae.', 'morbi', 'justo'), 1)]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看