我正在使用 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 变量输入的某种格式。
最佳答案
在学习环境中表示单词的标准方式是单词嵌入模型。
您想要的(这只是粗略地浏览一下 PyBrain 的数据集页面 [1])是通过将文本转换为其矢量表示来构建数据集。
有关如何自行操作的示例,请参阅 glove-python [2]。如果您想使用现有的包来执行此操作,请参阅 Google 的 word2vec [3] 或斯坦福的 GloVe [4],其中 Python 版本是一个简单的实现。
然后您可以使用此表示来训练您的神经网络。
[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/
关于python - python中的文本转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281218/