本项目只是提供一个中文词义消歧的思路,如果想要做更精细点的话,那个分类的数据需要质量更高一些,更多一些。
在main.ipynb中,包括数据处理,词向量获取,模型训练等,训练数据和词向量模型的地址在该文件中有写明。 模型的数据直接解压data/data.tar.gz,有三个文件夹,其实只用到了train。
数据集是一个分类数据集,包括校园,新闻,女性,文学四个类别。
- 每个类别包含0 ~ 500不等长度的文本,我们将100以上的文本进行切割为两段;
- 同一个类别的两段拼接,标记为label 1,不同类别的两段标记为0,或者不同类别中低于100长度的文本,两两组合标记为0(为了0,1类别差不多)
项目采用的是LSTM(一层) + ATTENTION的网络结构进行训练
- 将文本进行分词,基于sgns.target.word-word.dynwin5.thr10.neg5.dim300.iter5词向量模型提取词语的词向量;
- 将每个词的词向量进行拼接,输入到模型;
- 训练2分类模型(1代表相似,0代表不相似)
我们训练的时候输入的是两段文本,那么预测应该怎么输入呢?很简单,将包含 歧义词的文本A 和 歧义词的描述或解释B
进行拼接,这里涉及到一个问题,就是歧义词的解释或者描述怎么来?在本项目中,并未加入这一块,但是加入其实也不
难,连接一个baidu或者google的搜索引擎,将搜索到的多个义项分别和原始文本A进行拼接,输入至模型,最后模型将
输出最匹配的那个义项。这个具体怎么用可以看下predict函数,很简单。
分类的结果
result | Train | Test |
---|---|---|
Loss | 0.246 | 0.392 |
Acc | 90.12% | 83.28% |
-
如果您对本项目的任何内容有所疑问,欢迎大家提issue,我将会在第一时间给您回复;
-
如果您感觉本项目对于您有所帮助,请给个小星星鼓励下吧,您的鼓励将是我前进的最大动力。