gpt4 book ai didi

python - 在Python中对大量文本进行标记

转载 作者:行者123 更新时间:2023-12-02 00:27:57 25 4
gpt4 key购买 nike

我有一个巨大的文本文件列表需要标记。我有以下适用于小数据集的代码。然而,我在对巨大的数据集使用相同的过程时遇到了麻烦。我给出了一个小数据集的示例,如下所示。

In [1]: text = [["It works"], ["This is not good"]]

In [2]: tokens = [(A.lower().replace('.', '').split(' ') for A in L) for L in text]

In [3]: tokens
Out [3]:
[<generator object <genexpr> at 0x7f67c2a703c0>,
<generator object <genexpr> at 0x7f67c2a70320>]

In [4]: list_tokens = [tokens[i].next() for i in range(len(tokens))]
In [5]: list_tokens
Out [5]:
[['it', 'works'], ['this', 'is', 'not', 'good']]

虽然所有这些都适用于小型数据集,但我在使用相同的代码处理大量字符串列表(超过 1,000,000 个字符串列表)时遇到了问题。由于我仍然可以使用巨大的数据集来标记字符串,如 In [3] 中那样,它在 In [4] 中失败(即在终端中被杀死)。我怀疑这只是因为文本正文太大。

因此,我在这里寻求有关改进获取列表中字符串列表的过程的建议,就像我在In [5]中所得到的那样。

然而,我的实际目的是计算每个列表中的单词数。例如,在上面的小数据集示例中,我将拥有如下内容。

[[0,0,1,0,0,1], [1, 1, 0, 1, 1, 0]] (note: each integer denotes the count of each word)

如果我不必将生成器转换为列表即可获得所需的结果(即字数统计),那也很好。

如果我的问题不清楚,请告诉我。我很想尽我所能地澄清。谢谢。

最佳答案

您可以创建一组唯一单词的,然后循环遍历并对每个单词进行计数...

#! /usr/bin/env python

text = [["It works works"], ["It is not good this"]]

SplitList = [x[0].split(" ") for x in text]
FlattenList = sum(SplitList,[]) # "trick" to flatten a list
UniqueList = list(set(FlattenList))
CountMatrix = [[x.count(y) for y in UniqueList] for x in SplitList]

print UniqueList
print CountMatrix

输出是单词的总列表及其在每个字符串中的计数:

['good', 'this', 'is', 'It', 'not', 'works']
[[0, 0, 0, 1, 0, 2], [1, 1, 1, 1, 1, 0]]

关于python - 在Python中对大量文本进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668717/

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