gpt4 book ai didi

python - 考虑到随着 n 的增加,内存需求也迅速增加,人们如何使用 n-gram 进行情感分析?

转载 作者:太空狗 更新时间:2023-10-30 00:55:36 34 4
gpt4 key购买 nike

我正在尝试使用 Python 对推文进行情感分析。

首先,我实现了一个 n-grams 模型。所以,假设我们的训练数据是

I am a good kid

He is a good kid, but he didn't get along with his sister much

Unigrams:

<i, am, a, good, kid, he, but, didnt, get, along, with, his, sister, much>

二元组:

<(i am), (am a), (a good), (good kid), (he is), (is a), (kid but), (but he), (he didnt), (didnt get), (get along), (along with), (with his), (his sister), (sister much)>

八卦:

<(i am a), (am a good), (a good kid), .........>

最终特征向量:

<i, am, a, good, kid, he, but, didnt, get, along, with, his, sister, much, (i am), (am a), (a good), (good kid), (he is), (is a), (kid but), (but he), (he didnt), (didnt get), (get along), (along with), (with his), (his sister), (sister much), (i am a), (am a good), (a good kid), .........>

当我们对大约 8000 个条目的大型训练数据执行此操作时,特征向量的维数变得太大,结果导致我的计算机 (RAM=16GB) 崩溃。

那么,当人们在 100 多篇论文中提到使用“n-gram”作为特征时,他们在谈论什么?难道我做错了什么?

人们总是为“n-grams”做一些特征选择吗?如果是这样,我应该研究什么样的特征选择?

我正在使用 scikit-learn 来做这个

最佳答案

如果你完全按照你写的那样存储你的最终特征向量,我想我可以提出一些改进。

内存问题是由于特征(文本)重复了很多次,标记也是如此。考虑这个过程:

首先,存储所有不同的特征(并给出索引)。

例如,

1--feature1--(我是)

2--feature2--(am a)

...

这会生成一个所谓的特征空间。

总共可能有数千个特征,甚至更多。不过这应该是正常的。然后每个条目都可以重写为一系列数字,例如,

Entry1----- <1,1,1,0,....a_n>,其中第一个 1 表示 feature1(i am) 在此条目中出现 1 次,并且a_n为特征n出现的次数。

让我们假设有很多特征并且条目很短,这意味着在每个向量中有太多的零。我们可以如下重写之前的向量,

Entry1----{1:1,2:1,3:1},表示Entry1的1/2/3特征值为1,其他特征值为0。更短,不是吗?

最后,每个条目都表示为一个短向量,你会得到一个大的语料库矩阵。您的语料库现在可能如下所示:

{1:1, 2:1, 3:1}

{2:1, 29:1, 1029:1, 20345:1}

...

16G RAM 足以容纳 8000 个条目。您可以使用更少。


此外,如果您获得太多不同的标记(这意味着太多的特征)。在构造特征空间时,可以做的是去除频率低于阈值的特征,比如3次。特征空间的大小可以减半,甚至更小。

关于python - 考虑到随着 n 的增加,内存需求也迅速增加,人们如何使用 n-gram 进行情感分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824771/

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