除了词袋模型(TF-IDF)之外,将文本特征转换为数值特征的方法有哪些?

我最近一直在研究自然语言处理。我的目标是根据某些标准,对用罗马字母书写的多语言句子中的不同单词进行分类。因此,我需要一个分类器来实现这个目标。毫无疑问,有很多分类器可用。但由于我的特征是文本而非数值,而大多数分类器如支持向量机(SVM)需要数值特征作为输入,我寻找了一些方法来将我的文本特征转换为数值特征。虽然词袋模型结合术语频率和逆文档频率(TF-IDF)的概念是一种通用的方法,但我有一个名为“本地上下文”的文本特征,它的长度是固定的,我想知道是否可以不使用TF-IDF将其转换为数值特征。本地上下文特征指的是考虑前两个和后两个单词(这些单词构成了特定单词的上下文)。因此,我在寻找其他可能在这种情况下更有效的方法。我在Cross Validated上找到了一个类似的查询,但那是关于文档聚类的,而我想将单个单词分类到不同的类别中。我还在Quora上发现了一个未回答的类似问题

为了达到我的目的,我希望将文本特征转换为数值特征,或者找到一个可以接受文本特征作为输入的分类器。有谁能帮我…


回答:

真正的问题是,我如何列举所有可能的输入?这是一种罕见的情况,真的“唯一真正的限制就是你的想象力”。但一个简单的办法是列出所有可能的排列,并为每个排列分配一个数字。

对于一个非常小的词汇表,你可以为词汇表中单词的所有可能排列分配一个数字。如果你的词汇是{‘bag’, ‘of’, ‘words’},你可以分配以下数字

1 bag of words2 bag words of3 of bag words4 of words bag5 words bag of6 words of bag

也许还需要再增加几个来处理空位。但对于一个大的词典,这显然是不现实的。或许你可以为每个单词分配一个数字标识符:

1 bag2 of3 words

然后你可以做类似于(1 * 100) + (2 * 10) + (1 * 3)的操作来获得排列“bag of words”的数字123。或者,如果你想强调上下文,可以分配二进制特征,并对中心单词应用一个乘数:

001 bag010 of100 words

这样可以得到(1 * 001) + (1000 * 010) + (1 * 100) = 010101 = 21,用于表示中心单词’of’,其前后分别是’bag’和’words’的上下文。

什么方法有意义取决于你的应用。很容易想出一些小众应用,其中可能有意义去计算字母b的出现次数,或者直接使用你感兴趣的度量作为标识符。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注