What are the methods except Bag Of Words (TF-IDF) for converting textual features into numerical features?
这些天我一直在研究自然语言处理。我的目的是根据一些标准对罗马语多语种句子中的不同单词进行分类。因此,我需要一个分类器。毫无疑问,有很多。但是,由于我的特征不是数字的,而是文本的,而且大多数分类器像支持向量机(SVM)输入数字特征,所以我寻找一些方法来将我的文本特征转换为数字特征。尽管使用词频和文档逆频率(tf-idf)的单词袋概念是一种通用方法,但我的一个文本特征,即局部上下文,具有固定长度,我想知道是否可以在不使用tf-idf的情况下将其转换为数字特征。局部上下文特征是指考虑前两个和后两个词(包含特定词的上下文)。因此,我正在寻找任何其他的方法,可以证明在这种情况下更好。我在这里发现了类似的交叉验证查询,但这是为了文档集群,我想将单个单词分类到不同的类中。我还发现了一个关于Quora的类似问题没有答案。
为了达到我的目的,我希望将文本特征转换为数字特征,或者将文本特征作为输入的分类器。有人能帮我吗…
问题是,我如何枚举可能的输入?这是一种罕见的情况,真正的"唯一真正的限制是你的想象力"。但一个简单的方法是只列出可能的排列,并为每个排列分配一个数字。
使用一个非常小的词典,您可以为词典中每个可能的单词排列指定一个数字。如果你的词汇量是'bag'、'of'、'words'你可以指定数字
1 2 3 4 5 6 | 1 bag of words 2 bag words of 3 of bag words 4 of words bag 5 words bag of 6 words of bag |
也许还有一些可以满足空位的。但对于一本大字典来说,这显然是不可行的。如果您为每个单词指定一个数字标识符,则可能是:
1 2 3 | 1 bag 2 of 3 words |
然后你可以做(1*100)+(2*10)+(1*3)这样的事情来获得排列"单词袋"的数字123。或者,如果要强调上下文,可以指定二进制特性,并对中心词应用乘数:
1 2 3 | 001 bag 010 of 100 words |
将获得(1*001)+(1000*010)+(1*100)=010101=21,用于"由前导上下文‘bag’包围"和尾随上下文‘words’的首字。
有什么意义取决于您的应用程序。很容易找到合适的应用程序,在这些应用程序中,计算字母B或其他字母的出现次数是有意义的,并且只需直接使用您感兴趣的度量作为标识符。
从本质上讲,一袋单词是文本的表示。
为了表示一个词,你可以用一袋字母,字母N克或类似的东西。另一个想法是通过观察单词的左右邻接(以单词袋的形式表示)来对单词进行分类。
当然,您不必对一袋单词使用tf-idf(例如,一个简单的计数向量可以工作),但它旨在帮助选择在分类中最有用的单词。
如果没有更多的关于你要做什么分类的信息,这是有点困难的,但是其他一些方法可能是查看单词周围的n-grams,对周围的单词进行情绪分析,或者使用lda提取单词的主题分布,并将这些向量用作特征。(这些都是将文本数据转换为有用的数字特征的方法——没有真正的分类器处理原始文本。)