首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用list traning_data来计算unigram、bigram、cooc和with计数?

如何使用list traning_data来计算unigram、bigram、cooc和with计数?
EN

Stack Overflow用户
提问于 2015-07-28 03:38:29
回答 1查看 1K关注 0票数 0

我想知道如何用list traning_data来计算unigram、bigram、cooc和wordcount。

我是蟒蛇新来的,请耐心点,me.Thanks!

您需要实现HMM postagger的两个部分。

  1. HMM模型
  2. viterbi解码这是代码: 从集合导入计数器从数学导入日志类HMM(object):def __init__(self,epsilon=1e-5,training_data=None):self.epsilon = epsilon (如果training_data不是空的话):self.fit(training_data) def fit(self,training_data):“‘”计数训练数据中的单位数、二进制数、cooc数和字数。参数- training_data:列出一个训练数据列表,每个元素都是一个包含单词和后置的元组。“”“self.unigram = self.bigram‘’NN‘=5 self.bigram=计数器()#,例如bigram('PRP','VV')=1 self.cooc =计数器()#词的计数,例如: cooc('I','PRP')=1 self.wordcount =计数器()#单词的计数,例如单词’i‘=1 print('building HMM .’)单词,标签在training_data:#您的代码在这里!您需要实现ngram计数部分。请数#-单字#- bigram #- cooc #-字数打印(‘HMM模型已经建立。’)self.postags =k表示self.unigram中的k

这是training_dataset和预期结果如下:

代码语言:javascript
复制
    # The tiny example.
    training_dataset = [(['dog', 'chase', 'cat'], ['NN', 'VV', 'NN']),
                (['I', 'chase', 'dog'], ['PRP', 'VV', 'NN']),
                (['cat', 'chase', 'mouse'], ['NN', 'VV', 'NN'])
               ]

    hmm = HMM(training_data=training_dataset)

    # Testing if the parameter are correctly estimated.
    assert hmm.unigram['NN'] == 5
    assert hmm.bigram['VV', 'NN'] == 3
    assert hmm.bigram['NN', 'VV'] == 2
    assert hmm.cooc['dog', 'NN'] == 2
EN

回答 1

Stack Overflow用户

发布于 2015-08-04 11:33:13

在列表中使用Counter()是非常直接的。Counter.update()完全能满足你的需要。

代码语言:javascript
复制
from nltk.util import bigrams

...

for words, tags in training_data:
            self.unigram.update(tags)
            self.bigram.update(bigrams(tags))
            self.cooc.update(zip(words,tags))
            self.wordcount.update(words)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31666958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档