我正在寻找一个词汇化模块/ lib,它会传递一个句子,如:
“这是很好”到“这是<strong>好”。
我熟悉nltk中可用的一些工具,例如词干和词形还原,但它并不是我正在寻找的
我的目标是尽可能减少说同样事情的各种方式。
答案 0 :(得分:2)
有几种方法可以做到这一点。
1)您可以使用预定义的一组同义词来替换单词,例如WordNet。您可以使用nltk
包使用WordNet语料库。
nltk文档有一个很好地解释了this的例子。
此方法仅涵盖预定义的同义词,并且不会“学习”#34;您正在使用的数据中的类似概念。例如,起重机可以是车辆或鸟类。
2)另一种方法是使用LSA来识别语料库中单词用法的类似概念。
如果您将文本视为单词的向量(语料库中的每个单词),则向量具有V维,其中V是语料库中唯一单词的总数。意思是,你试图解决的问题是减少维数。 LSA适用于减少维数。
在wikipedia上阅读有关LSA的更多信息。
您可以使用sklearn's TruncatedSVD class来使用LSA方法。
答案 1 :(得分:2)
这是一个更实验性的,但另一种可能性是使用单词嵌入。
单词 great 和 good 应该具有相似的出现上下文,因此它们的向量应该相似,你将这些单词聚类,并将它们聚合成相同的单词/概念
当然,这在很大程度上取决于您用来生成嵌入的语料库和方法。