RandolphVI / Multi-Label-Text-Classification

About Muti-Label Text Classification Based on Neural Network.
Apache License 2.0
552 stars 143 forks source link

输入文件的格式是什么样子的? #1

Open aitianyu2006 opened 6 years ago

aitianyu2006 commented 6 years ago

输入文件的格式是什么样子的?

RandolphVI commented 6 years ago

@aitianyu2006 输入的文件是 .json 格式的:

{testid: "xxxxxxxx", feature_content: ["xx", "xx", "xxx"], labels_index: [33, 77, 129], labels_num: "3"}

其中:

例如,你的所有标签的个数是 500,某一条记录属于第 33,77,129 个类别,labels_index 就记为 [33, 77, 129]。

aitianyu2006 commented 6 years ago

我尝试一下 谢谢了

luchenue commented 6 years ago

labels_num 有作用吗?好像也是可有可无

RandolphVI commented 6 years ago

@luchenue 是的,目前来说,labels_num 在代码中没有用到。主要是后面有个想法将会用到这个东西。

JiaWenqi commented 5 years ago

@RandolphVI 请问 feature_content这个字段是分完词的结果,还是分完词后去除停用词后的结果?如果文章的词数很多,比如在2000以上的话,都要保留这么多词吗?如果用不到这么多词的话,是不是不用保留这么多数量的词,训练的时候对每个doc中的词的数量是不是有数量限制?

RandolphVI commented 5 years ago

@JiaWenqi

feature_content 是分完词后并去除停用词后的结果。

如果文章的词数很多,是要看是整体数据集的词数都很多还是就极个别的文章是这样的。 训练呢的时候每个 doc 的词的数量可以用 pad_seq 设定(一般是你整体数据集按照所有 doc 的词数分布图来确定) 。超过 pad_seq 词语长度的 doc 截取超过的词语,不足的 pad_seq 词语长度的 doc 补齐至 pad_seq 长度。

ft3020997 commented 5 years ago

你好,想问一下训练文本输入的事情。 假设我有2000条长文本,每条文本包含约10-20句话,每句话包含若干单词。 如何做到 “word-sent-doc”的向量化输入,因为看到feature_content的单条数据就是每个doc分词后的结果。

RandolphVI commented 5 years ago

@ft3020997

doc 由 sentence 组成,sentence 由 word 组成,先得到长文本的各个分词词向量,堆叠形成的矩阵就是 doc 文档的向量化表征。具体流程也很简单,长文本里面先进行分词,其中包括去除停用词操作,然后会得到每个长文本记录对应的分词。这个分词就是 feature_content 的内容,之后训练模型的时候,通过 load 你训练好的词向量表就可以得到这个长文本的文档向量了。

ft3020997 commented 5 years ago

@RandolphVI 那模型知道该如何进行单个doc句子的截断吗?因为看到feature_content 的内容,都是[word1,word2....wordN]的格式,如果需要做成“word-sent-doc”形式的,是否需要doc1[sent1[word,word],sent2[word,word]....sentN]的输入?

RandolphVI commented 5 years ago

@ft3020997

听你的说法,是要区别对待每个句子,这样有两个做法:

以上我说的两种方法,我的代码并不支持处理,这属于是区别对待 doc 中的 sentence 方式,你需要修改的地方不仅仅是数据处理部分的代码,还需要针对你所生成的堆叠文档向量进行设计特定网络(例如网络是寻找文档中不同句子的重要程度)。

ft3020997 commented 5 years ago

@RandolphVI 十分感谢大神的解答,我先尝试一下,谢谢。

327850200 commented 5 years ago

1 环境都是按照requirements里装的虚拟环境。 2 先是按照作者给的提示,自己做了个中文的json文本格式,有报错。 3 然后只用作者给的一条记录跑了下CNN的train,报错如下: FileNotFoundError: [Errno 2] No such file or directory: '../data/content.txt' 请问作者,是我遗漏了什么嘛?

RandolphVI commented 5 years ago

@327850200

可以参考我的这个项目下 Issues 中的一个问题 https://github.com/RandolphVI/Multi-Label-Text-Classification/issues/12 已经在里面作了回答,希望能帮到你

christianahui commented 4 years ago

如果每个样本的labels_num都不相同,可以支持吗?

RandolphVI commented 4 years ago

@christianahui

抱歉过了这么久才回复。 可以的,因为本身 Multi-label Classification 任务就是处理文本可能对应一个或多个的属性标签。 每个样本的 labels_num 本身可能就不一样,可以参考 /data 文件夹下的 data sample 的 format。 项目的代码是可以处理上述情况的。