gpt4 book ai didi

python - 如何用Word2Vec进行预测?

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:28 24 4
gpt4 key购买 nike

我正在做阿拉伯语方言文本分类,我使用 Word2Vec 来训练模型,到目前为止我得到了这个:

 def read_input(input_file):

with open (input_file, 'rb') as f:
for i, line in enumerate (f):
yield gensim.utils.simple_preprocess (line)

documents = list (read_input (data_file))
logging.info ("Done reading data file")

model = gensim.models.Word2Vec (documents, size=150, window=10, min_count=2, workers=10)
model.train(documents,total_examples=len(documents),epochs=10)

如果新文本属于我拥有的 5 种方言中的任何一种,我现在该怎么做才能预测新文本?
另外,我环顾四周,发现了这段代码:

# load the pre-trained word-embedding vectors 
embeddings_index = {}
for i, line in enumerate(open('w2vmodel.vec',encoding='utf-8')):
values = line.split()
embeddings_index[values[0]] = numpy.asarray(values[1:], dtype='float32')

# create a tokenizer
token = text.Tokenizer()
token.fit_on_texts(trainDF['text'])
word_index = token.word_index

# convert text to sequence of tokens and pad them to ensure equal length vectors
train_seq_x = sequence.pad_sequences(token.texts_to_sequences(train_x), maxlen=70)
valid_seq_x = sequence.pad_sequences(token.texts_to_sequences(valid_x), maxlen=70)

# create token-embedding mapping
embedding_matrix = numpy.zeros((len(word_index) + 1, 300))
for word, i in word_index.items():
embedding_vector = embeddings_index.get(word)
if embedding_vector is not None:
embedding_matrix[i] = embedding_vector

但是当我运行它并加载我训练过的 word2vec 模型时,它给了我这个错误:

ValueError: could not convert string to float: '\x00\x00\x00callbacksq\x04)X\x04\x00\x00\x00loadq\x05cgensim.utils'

注意:

实际上,还有一个代码我没有在这里发布,我想将word2vec与神经网络一起使用,我有神经网络的代码,但我不知道如何使我从word2vec获得的特征成为作为神经网络的输入,并以标签作为输出。是否可以将 word2vec 连接到深度神经网络以及如何连接?

最佳答案

Word2vec 本身并不能将文本分类为方言,因此您还没有在这里勾画出一个合理的完整方法。

是什么让您认为 word2vec 可以或应该用作此任务的一部分? (如果这种方法有一个激励人心的操作理论,或者其他一些已发表的先例,可以给您带来想法,那么这可以帮助指导应该做什么。)

您的训练数据是什么样的?

如果有大量示例文本,并且具有关于每个文本来自哪种方言的准确标签,您是否尝试过使用简单的词袋或字符 n-gram 表示来表示文本的分类器? (通过发现方言与文本中的确切单词、单词组或单词片段之间的关系,这样的分类器可能比 word2vec 效果更好。Word2vec 会忽略单词片段,并且驱动相似含义单词的向量靠近,从而掩盖单词拼写或单词选择中的微小差异。)

您也可以尝试:

  • 分类模式下的 FastText,其中单词向量(以及可选的单词片段向量)经过训练,专门擅长在一组已知标签中进行分类(而不仅仅是擅长预测)附近的单词,如经典的 word2vec

  • 使用多个 word2vec 模型(每种方言一个)作为分类器的技术,如 gensim 附带的笔记本中所示:Deep Inverse Regression with Yelp Reviews

(分别关于您显示的代码:

  • 如果您已经向类实例化调用提供了 documents,则无需调用 train(documents,...) – 这将有已经完成培训,启用 INFO 日志记录并查看日志应该会清楚

  • 您不需要使用此类尝试直接打开/读取 w2vmodel.vec 文件的代码,因为 gensim 包含读取此类文件的方法直接,例如 .load_word2vec_format() 或(如果完整模型是从 gensim 原生生成的 .save()),只需 .load().

)

关于python - 如何用Word2Vec进行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56367510/

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