我有一个评论列表,列表的每个元素都是kaggle中IMDB数据集的评论。共有25000条评论。我给每个评论的标签分别为+1(正面)和-1(负面)。
我想用这些评论和标签来训练隐马尔可夫模型。
1-我应该给HMM的顺序是什么?它是像单词袋那样的东西,还是我需要计算的诸如概率之类的东西?哪种特征提取方法合适?有人告诉我在评论的列表上使用单词袋,但是当我稍加搜索时,我发现HMM关心单词的顺序,但单词袋并不能保持顺序中单词的顺序。我应该如何准备此评论列表以将其输入到HMM模型中?
2-有一个框架吗?我知道hmmlearn,我认为我应该使用MultinomialHMM,如果我错了,请更正我。但是它没有监督,当我想训练它时,它的模型不会将标签作为输入,而且由于一些我问正确输入类型的问题,我遇到了一些我不知道如何解决的有趣错误。应该给它。 seqlearn是我最近发现的一种,它很好还是有更好的用途?
我感谢任何指导,因为我对NLP的知识几乎为零。
最佳答案
我能够以某种方式以出乎意料的良好准确性来做到这一点,但我不确定到底发生了什么,我使用了seqlearn框架,该框架的文档很糟糕。我真的建议对HMM使用MATLAB而不是python。
我使用sklearn TfidfVectorizer进行特征提取,然后执行了以下操作:
vectorizer = TfidfVectorizer(norm=None)
x_train = vectorizer.fit_transform(train_review)
x_test = vectorizer.transform(test_review)
len_train_seq = np.array([[1,1]]*(len(train_review)/2))
len_test_seq = np.array([1]*len(test_review))
model = seqlearn.hmm.MultinomialHMM()
HMM_Classifier = model.fit(x_train, Y, lengths = len_train_seq)
y_predict = HMM_Classifier.predict(x_test, lengths=len_test_seq)
如果HMM的知识渊博的人给出关于HMM进行情感分析的更健壮和清晰的指南,我仍将不胜感激。
关于python - 使用隐马尔可夫模型进行情感分析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53238402/