gpt4 book ai didi

python - 带Python的NLP-如何建立语料库,使用哪个分类器?

转载 作者:行者123 更新时间:2023-12-01 04:39:24 27 4
gpt4 key购买 nike

我正在尝试确定将Python NLP项目引入哪个方向,对于SO社区的任何建议,我将非常感谢。

问题:

假设我有100个.txt文件,其中包含决策机构举行的100次会议的会议记录。我也有100个相应会议结果的.txt文件,其中包含该机构通过的决议。结果分为以下七个类别之一:1 –不采取行动,2 –采取软行动,3 –采取更强有力的行动,4 –采取最强有力的行动,5 –取消先前采取的软行动,6 –取消先前采取的强有力的行动,7 –取消先前采取的最强有力的措施。可替代地,这可以以从-3到+3的比例表示,0表示无动作,+ 1表示软动作,-1表示取消先前采取的软动作,依此类推。

根据输入文字,我有兴趣预测这七个结果中的哪个会发生。

我正在考虑将其视为一种情感分析,因为采取某种行动的决定基本上就是一种情感。但是,我发现的所有情感分析示例都集中于积极/消极的二分法,有时还会添加中性情感作为一个类别。我还没有找到超过3种可能的结果分类的示例-不知道这是否是因为我没有在正确的地方看待,是因为无论出于何种原因,这都不是真正令人感兴趣的方法,还是因为出于某种原因,这种方法是一个愚蠢的主意,但我还不确定。

问题1.我应该以一种情感分析的方式来进行这种处理吗,还是有其他一些方法可以更好地起作用?我是否应该将此视为一种分类问题,类似于按主题对新闻文章进行分类并训练模型以识别“主题”(结果)?

语料库:

我了解我需要建立一个用于训练/测试数据的语料库,看来我有两个显而易见的选择:

1 –手工编码一个CSV文件以获取训练数据,该数据将包含每个输入文本中的一些关键短语,并以7点制列出相应结果的值,类似于此处所做的:http://help.sentiment140.com/for-students

2 –使用Pang和Lee使用的方法(http://www.cs.cornell.edu/people/pabo/movie-review-data/),并根据结果将输入的每个.txt文件放入七个文件夹之一,因为根据历史数据可以知道结果(采取了何种操作) 。

第一种选择的缺点是,这将是非常主观的-我将确定我认为最重要的关键字/词组应包括在内,而我不一定是最好的仲裁者。第二种选择的缺点是,它的预测力可能较低,因为这些文本很长,包含许多无关的词/短语,并且在样式上常常很相似(策略性演讲倾向于使用策略性单词)。不过,我查看了庞(Pang)和李(Lee)的数据,似乎这可能不是一个大问题,因为他们使用的评论风格也不尽相同。我倾向于Pang and Lee的方法,但不确定是否可以使用两种以上的结果。

问题2.我是否正确以为这是我建立语料库的两个一般选择?我是否还有其他(更好)的选择?

问题3.鉴于以上所有,我应该使用哪个分类器?我认为最大熵效果最好;我也研究了随机森林,但是我对后者没有任何经验,并且真的不知道我在做什么。

提前非常感谢您:)

最佳答案

问题1-最简单的方式认为这是文本分类任务(情感分析是一种文本分类任务,但绝不是唯一的一种)。

或者,正如您指出的那样,您可以将数据视为连续存在的数据,范围为-3(取消先前执行的最强操作)到+3(执行最强的操作),中间为0(不执行任何操作)。在这种情况下,您可以将结果视为具有自然顺序的连续变量。如果是这样,那么您可以将其视为回归问题而不是分类问题。在不了解更多数据的情况下很难知道这是否明智。如果您怀疑自己会有很多单词/短语,它们在音阶的一端很可能是(-3),而在音阶的另一端则很不可能(+3),反之亦然,那么回归可能有意义。另一方面,如果相关的词/短语与强烈的情感相关联并且很可能出现在音阶的两端但不在音阶的中间,那么您最好将其视为分类。它还取决于您要如何评估结果。如果您的算法预测文档为-2且实际上为-3,那么与文档预测的+3相比,它的惩罚会更少吗?如果是这样,最好将其视为回归任务。

问题2:“我是否认为这是我建立语料库的两个一般选择?我是否还缺少其他(更好)选择?”

请注意,文档集(会议记录和相应结果的.txt文件)是您的主体-通常要做的是随机选择20%左右作为测试数据,其余80%作为训练数据。上面考虑的两个常规选项是用于选择分类或回归算法应遵循的一组功能的选项。

您可以正确地识别出两种最明显的特征使用方法的优点和缺点(手工挑选您自己的方法,而Pang&Lee仅使用字母组合词(单词)作为短语的方法)。

就个人而言,我也倾向于使用后一种方法,因为众所周知,人类很难预测哪些短语将对分类有用-尽管没有理由为什么您不能将两者组合在一起,因为最初的功能集包括了所有单词以及您认为可能特别相关的任何短语。正如您所指出的那样,会有很多无关的单词,因此可能有助于抛出很少见的单词,或者在类之间的频率差异不足以提供任何判别能力的单词。减少一组初始特征的方法称为“特征选择”技术-提到了一种常见方法here。或参见this paper获得更全面的列表。

您还可以使用数据集here考虑诸如高价词,高引语词或高优势词的百分比之类的功能(单击补充材料并下载zip)。

根据您要为此项目投入多少精力,另一种常见的做法是尝试一整套方法,然后看看哪种方法最有效。当然,您无法使用测试集中的数据来测试哪种方法最有效-这可能会作弊,并可能会过度拟合测试数据。但是您可以将训练集的一小部分留作“验证数据”(即用于测试不同方法的小型测试集)。鉴于您没有太多的培训数据(大约80个文档),可以考虑使用cross validation

问题3-最好的方法可能是尝试不同的方法,并选择在交叉验证中最有效的方法。但是,如果我不得不选择一两个,我个人发现k-nearest neighbor classification (with low k) or SVMs通常可以很好地处理这种事情。合理的方法可能是


让您的初始特征全部为会标(单词)+短语
在查看一些训练数据后,您认为可能具有预测性;
应用特征选择技术来缩小特征集;
应用任何
可以处理高维/文本特征的算法,例如http://www.csc.kth.se/utbildning/kth/kurser/DD2475/ir10/forelasningar/Lecture9_4.pdf中的特征(该pdf中有很多技巧),或者在Pang&Lee论文中实现了不错的性能的算法。


http://nlp.stanford.edu/IR-book/pdf/13bayes.pdf中讨论了其他可能性。通常,特定算法的重要性小于其功能。坦白地说,这听起来像是一项非常困难的分类任务,因此很可能没有一件事情会做得很好。

如果决定将其视为回归而不是分类任务,则可以采用k最近邻回归(http://www.saedsayad.com/k_nearest_neighbors_reg.htm)或岭回归。

随机森林通常不适用于大量依赖特征(单词),但是如果最终决定使用较少数量的特征(例如,您手动选择的一组单词/短语,加上%的高价单词和%的高流行单词)。

关于python - 带Python的NLP-如何建立语料库,使用哪个分类器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com