我是NLP的新手,关于分类任务有一些问题。我有一个数据框结构的数据集,其中包含两列,第一列是文本(即字符串),第二列是每个文本的标签。假设第一列是x_train,第二列是y_train。为了应用MLP,我可以使用以下代码
Tfidf_vect = TfidfVectorizer(max_features = 5000)Tfidf_vect.fit(input_text)Train_X_Tfidf = Tfidf_vect.transform(x_train)Test_X_Tfidf = Tfidf_vect.transform(x_test)
我想尝试使用Word2Vec模型,但我不知道如何使用Word2Vec将我的训练数据转换为数字,这样我就可以再次应用MLP模型。如果你能帮助我,我将不胜感激。
回答:
根据sklearn的文档,
max_features int, default=None
如果不为None,则构建一个仅考虑语料库中按术语频率排序的前max_features词汇的词汇表。
这意味着,根据你的文本,TfidfVectorizer将构建一个包含文本中出现频率最高的’max_features’个标记(词或字符)的词汇表。例如,使用词级别,设置max_features = 10,它将选取文本中出现最频繁的10个词作为其词汇表。至于你希望使用多少特征,这取决于你的文本中的词数。最常见的选择是10000,尽管如此。
至于你的第二个问题,除了Gensim的Word2Vec,你还可以尝试Keras的Embedding层。TensorFlow网站上有一个很好的教程,在这里可以找到。