Multi-Label-Text-Classification icon indicating copy to clipboard operation
Multi-Label-Text-Classification copied to clipboard

数据格式,请问一下在data_helpers.py中的content.txt与metadata.tsv是什么,具体格式是什么,能否提供一个样例

Open daneren opened this issue 6 years ago • 4 comments

TEXT_DIR = '../data/content.txt' METADATA_DIR = '../data/metadata.tsv'

daneren avatar Apr 12 '19 02:04 daneren

content.txt 文件可以看成是你所有数据集的集合(也就是你的语料库),用来通过 gensim 生成对应语料库的词向量的。因此,如果你使用了其他的预先训练好了的词向量,例如通过 wiki 语料库训练的得到的词向量,可以不使用 content.txt 文件。通过修改一下代码,导入你的预先训练好的 pre-trained embedding 文件即可。

content.txt 是你所有数据集条目的集合,每一行就是一条记录,记录里仅包含文本信息不包含标签信息等等(只用 embedding 文本分词),文本信息是属于分词之前的原始文本。举个例子,例如:

  1. 今天天气很好。
  2. 我很喜欢吃橘子。

(数据集中的一条记录,1 表示第一行)

  • metadata.tsv 就是通过 data_helpers.pycreate_metadata_file() 函数得到的文件。
  • create_metadata_file() 接受之前你生成训练好的词向量文件为输入,metedata.tsv 为输出文件。
  • metadata.tsv 是用来进行词向量可视化展示用的,可以参考这个效果。在上述链接当中,提供了 metadata.tsv 文件的清晰描述,我在此就不过多赘述了。

RandolphVI avatar Apr 12 '19 04:04 RandolphVI

content.txt file can be regarded as a collection of all your datasets (i.e. your corpus), which are used to generate the corresponding word vector of the corpus through gensim package.

Therefore, if you use other pre-trained word vectors, such as the word vectors from wiki corpus, you can ignore the content.txt file. But, remember to import your pre-trained embedding file by modifying the related code.

content.txt is the collection of all your data records, each row is a record, the record only contains text information (not including the label), the text information is the original text before the segmentation. For example:

  1. The weather is fine today.
  2. I like orange very much.

(They are two records in the dataset, 1 represents the first row)

  • metadata.tsv is generated by create_metadata_file() function of data_helpers.py script.
  • create_metadata_file() accepts the trained word vector file you generated as input and outputs metedata.tsv file.
  • metadata.tsv is used for word vector visualization. You can refer to this which provides a clear description of the metadata.tsv file.

RandolphVI avatar Dec 16 '19 14:12 RandolphVI

假如我进行multi label text classification的文本(此文本与领域相关)是:

  • 我有一个空气炸锅
  • 吉普棒球帽男帽子春秋
  • 男士睡衣冬季珊瑚绒夹棉加厚中老年
  • 伟g男性成人用品口服持久1粒
  • 华为mate30pro手机壳
  • 售楼处洽谈桌椅组合一桌四椅实木简约现代轻奢
  • 星特朗新款天文望远镜80 -瑞格尔投影仪 ...

为了提升多标签分类的效果,是不是需要自己使用content.txt训练词向量,而且content.txt最好需要包含这些类似的文本?毕竟在非领域相关的word-embedding语料中很多领域相关词语(空气炸锅,星特朗,瑞格尔...)属于未登录词?如果不是自己训练领域相关的word2vec语料,使用其他语料会导致多标签分类效果变差么,从理论上来说?

再问个问题,有哪些方法能够处理具有排序信息的多标签分类任务?例如,在电商领域中,苹果即可以属于手机,又可以属于水果,但是在与电子产品相关的电商(也卖水果,主营3C)中苹果属于手机的概率要比属于苹果的概率大;自己去了解了下,没有发现这个方向有比较好的解决办法

zhangyuanscall avatar Jan 16 '20 03:01 zhangyuanscall

@zhangyuanscall

第一个问题,我的个人理解是的,如果使用的是非本领域的相关的 word2vec 语料,会一定程度上导致分类效果变差。原因是未登陆词的词向量会随机初始化,本质上来说随机初始化的词向量表基本上都是不如特定领域预料训练过的(因为加了先验知识)。典型的例子就是,wiki 的大语料库训练出来的word2vec model 在专业医学领域(具有很多专业医学名词)表现不如特定医学语料库。

第二个问题,具有排序信息的多标签分类任务。这个讲道理,我不是太懂你的意思。你的意思是说比如在一个电商大领域下,涉及苹果这一个分词,你想要的结果是最后出来是手机的概率要大于水果的概率?如果是这样的情况,基本上只要是有标记数据都能实现,因为这个是基本的文本多标签分类问题。

但如果你的意思是说,在一个很大很笼统的领域下(即所有可能的领域),涉及苹果这一个分词,你事先知道了它的领域信息,比如是水果或者手机领域,对于最后结果分类的偏向,你的做法只需要想办法把它的领域信息表征进来,之后一起做 co-attention 也好,或者其他方式都行,建立融合表征就行。

RandolphVI avatar Jan 17 '20 03:01 RandolphVI