gpt4 book ai didi

python - 我是否很好地理解词嵌入(例如逻辑回归)的使用?

转载 作者:行者123 更新时间:2023-11-30 08:53:39 25 4
gpt4 key购买 nike

我想知道我是否正确理解了在自然语言处理中使用世界嵌入的想法。我想向您展示我的看法,并询问我的解释是否正确。

假设我们想要预测句子是肯定的还是否定的。我们将使用在维度等于 100 的非常大的文本语料库上准备的预训练词嵌入。这意味着对于每个词我们有 100 个值。我们的文件如下所示:

...
new -0.68538535 -0.08992791 0.8066535 other 97 values ...
man -0.6401568 -0.05007627 0.65864474 ...
many 0.18335487 -0.10728102 0.468635 ...
doesnt 0.0694685 -0.4131108 0.0052553082 ...
...

显然我们有测试和训练集。我们将使用 sklearn 模型来拟合和预测结果。我们的火车组看起来是这样的:

1 This is positive and very amazing sentence.
0 I feel very sad.

测试集包含如下句子:

In my opinion people are amazing.

我主要对输入数据的预处理有疑问。我想知道是否应该这样做:

我们对所有句子进行标记化、删除停用词、小写等。因此,对于我们的示例,我们得到:

'this', 'is', 'positive', 'very', 'amazing', 'sentence'
'i', 'feel', 'very', 'sad'

'in', 'my', 'opinion', 'people', 'amazing'

我们使用pad_sequences:

1,2,3,4,5,6
7,8,4,9

10,11,12,13,5

此外,我们检查训练集和测试集中最长句子的长度。假设在我们的例子中最大长度等于 10。我们需要所有向量具有相同的长度,因此我们用零填充其余字段。

1,2,3,4,5,0,0,0,0,0
6,7,4,8,0,0,0,0,0,0

10,11,12,13,5,0,0,0,0,0

现在最大的疑问 - 我们将单词嵌入 word2vec 文件中的值分配给训练集和测试集准备好的向量中的所有单词。

我们的词嵌入 word2vec 文件如下所示:

...
in -0.039903056 0.46479827 0.2576446 ...
...
opinion 0.237968 0.17199863 -0.23182874...
...
people 0.2037858 -0.29881874 0.12108547 ...
...
amazing 0.20736384 0.22415389 0.09953516 ...
...
my 0.46468195 -0.35753986 0.6069699 ...
...

例如,'in', 'my', 'opinion', 'people', 'amazing' 等于 10,11,12,13,5,0, 0,0,0,0 我们得到这样的表的表:[-0.039903056 0.46479827 0.2576446 ...],[0.46468195 -0.35753986 0.6069699 ...],[0.237968 0.17199863 -0.23182874 ...],[0.2037858 -0。 29881874 0.12108547 ...],[0.20736384 0.22415389 0.09953516 ... ],0,0,0,0

最后我们的火车组看起来是这样的:

x             y
1 [0.237968 0.17199863 -0.23182874...],[next 100 values],[next 100 values],[...],[...],0,0,0,0,0,
0 [...],[...],[...],[...],[...],[...],[...],0,0,0
1 [...],[...],[...],[...],[...],0,0,0,0,0
...

测试集看起来是这样的:

                   y
[100 values],[...],[...],[...],0,0,0,0,0,0
...

在最后一步中,我们使用 sklearn 模型来训练我们的模型:

 LogisticRegression().fit(values from y column of train set, values from x column of train set)

然后我们预测数据:

 LogisticRegression().predict(values from y column of test set)

上面我描述了整个过程,并给出了最让我疑惑的具体步骤。我请你指出我在推理和解释中所犯的错误。我想确保我理解正确。预先感谢您的帮助。

最佳答案

逻辑回归接受 X 输入的平面二维矩阵,但您试图向其中提供一个奇怪的坚固结构 - 这是行不通的。

我建议一个更简单的解决方案 - 只需使用句子中每个单词的平均嵌入作为逻辑回归的输入。在这种情况下,该输入将具有规则的形状并且相对较小。如果你想改进这个公式,你可以对这个平均值进行加权(例如通过 TF-IDF)。

如果您想将句子建模为嵌入序列,则需要比逻辑回归更复杂的模型 - 例如循环神经网络。

关于python - 我是否很好地理解词嵌入(例如逻辑回归)的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659994/

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