Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于隐马尔可夫模型的情绪分析_Python_Nlp_Sentiment Analysis_Hidden Markov Models - Fatal编程技术网

Python 基于隐马尔可夫模型的情绪分析

Python 基于隐马尔可夫模型的情绪分析,python,nlp,sentiment-analysis,hidden-markov-models,Python,Nlp,Sentiment Analysis,Hidden Markov Models,我有一个评论列表,列表中的每个元素都是对kaggle中IMDB数据集的评论。总共有25000篇评论。我有一个标签,每个评论+1代表正面,-1代表负面 我想用这些评论和标签来训练一个隐马尔可夫模型 1-我应该给HMM什么顺序?这是一个像纸袋一样的单词,还是我需要计算的概率?什么样的特征提取方法是合适的?我被告知使用评论列表中的单词袋,但当我搜索一点时,我发现HMM关心单词的顺序,但单词袋不能保持单词的顺序。我应该如何准备这个评论列表,以便能够将其输入到HMM模型中 2-是否有这样一个框架?我知道h

我有一个评论列表,列表中的每个元素都是对kaggle中IMDB数据集的评论。总共有25000篇评论。我有一个标签,每个评论+1代表正面,-1代表负面

我想用这些评论和标签来训练一个隐马尔可夫模型

1-我应该给HMM什么顺序?这是一个像纸袋一样的单词,还是我需要计算的概率?什么样的特征提取方法是合适的?我被告知使用评论列表中的单词袋,但当我搜索一点时,我发现HMM关心单词的顺序,但单词袋不能保持单词的顺序。我应该如何准备这个评论列表,以便能够将其输入到HMM模型中

2-是否有这样一个框架?我知道hmmlearn,我想我应该用多项式,如果我错了,请纠正我。但它是不受监督的,当我想训练它时,它的模型不接受标签作为输入,我得到了一些有趣的错误,我不知道如何解决,因为我问的第一个问题是我应该给它正确的输入类型。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进行情绪分析,我仍然会非常感激。

HMM在您需要为序列中的每个项目指定一个标签时使用。在情绪分析中,您为整个序列(审查)指定了一个标签,因此HMM不太适合此任务。相反,您可以使用朴素贝叶斯分类器。HMMs和朴素贝叶斯都可以在有监督的环境中学习,也可以在无监督的环境中学习(您指定标签的数量,通常使用期望最大化算法在无监督的情况下学习)。我也发现了这一点,你们给了一个序列中的每个项目一个标签,但这是我的类的一个项目,我必须使用HMM,我不能使用其他任何东西。我知道HMM在抽象层次上是如何工作的,但我不能将我对HMM的一点知识映射到这个问题上。谢谢你的反馈