1

我正在用 PyBrain 构建一个用于文本分类问题的循环神经网络。经过多次尝试,我仍然无法弄清楚如何将字符串列表转换为可用作数据集的数组。我做了什么:

import collections,re
from pybrain.datasets import SupervisedDataSet

#create the supervised dataset variable with 5 inputs and 1 output
windowSize=5
main_ds = SupervisedDataSet(windowSize,1)

with open('ltest5lg_d1.fr','r') as train_1:
        import_data_train=train_1.readlines()

train_data = []

for lines in import_data_train:
    s = lines.split()        
    for words in s:
        train_data.append(words)

bagsofwords = [collections.Counter(re.findall(r'\w+', txt)) for txt in train_data]

sumbags = sum(bagsofwords, collections.Counter())

所以我得到了训练数据的频率表,但我无法弄清楚如何将数据本身转换为可以用作 main_ds 变量中的输入的某种格式。

4

1 回答 1

1

在学习上下文中表示单词的标准方法是单词嵌入模型。

您想要的(这只是粗略地浏览一下 PyBrain 的数据集页面 [1])是通过将文本转换为其矢量表示来构建数据集。

有关如何自己操作的示例,请参阅 glove-python [2]。如果您想使用现有的包来执行此操作,请参阅 Google 的 word2vec [3] 或斯坦福的 GloVe [4],其中 python 版本是一个幼稚的实现。

然后,您可以使用此表示来训练您的 NN。

[1] http://pybrain.org/docs/quickstart/dataset.html
[2] https://github.com/maciejkula/glove-python
[3] https://code.google.com/p/word2vec/
[4] http://www-nlp.stanford.edu/projects/glove/
于 2015-02-03T00:30:55.943 回答