crownpku / Information-Extraction-Chinese

Chinese Named Entity Recognition with IDCNN/biLSTM+CRF, and Relation Extraction with biGRU+2ATT 中文实体识别与关系提取
2.21k stars 813 forks source link

如何才能实现识别新增的实体类型 #32

Open cmdares opened 6 years ago

cmdares commented 6 years ago

比如,需要拾取出电话号码,邮箱等号码类的实体。 谢谢,或者通过什么方式能够进行开发和自我训练。 请指导一下。

crownpku commented 6 years ago

建议先把你的标注数据按照同样的格式放去data文件夹下重新训练模型看看。

cmdares commented 6 years ago

好的,我试试,谢谢您。 顺便问下,example.train 这个文件从哪里搞的,100万个字的标注啊!费很大精力! 是否还有更多的语料可以免费下载到?谢谢

leolle commented 6 years ago

作者应该是从别的地方找来的语料。这东西太难找了。

SUNCHAO1212 commented 5 years ago

你好,抱歉打扰了,想请教一下,我按照同样的格式标注了语料放到data文件夹下,但是维特比译码返回的标签序列超出 "id_to_tag" 字典。 我尝试清除了 "maps.pkl" 文件,"id_to_tag" 字典内容是:{0: 'O', 1: 'I-ORG', 2: 'B-ORG', 3: 'E-ORG'},然而 "viterbi_decode()" 的返回值超出字典范围 超出的返回值是(倒数第二位是6,不存在字典中):[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 3]

语料标注样例如下: 该 O 项 O 目 O 采 O 购 O 人 O 海 B-ORG 口 I-ORG 市 I-ORG 园 I-ORG 林 I-ORG 管 I-ORG 理 I-ORG 局 I-ORG ; O

报错信息如下: Traceback (most recent call last): File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/main.py", line 244, in tf.app.run(main) File "/home/sunchao/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 126, in run _sys.exit(main(argv)) File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/main.py", line 232, in main train() File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/main.py", line 199, in train best = evaluate(sess, model, "dev", dev_manager, id_to_tag, logger) File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/main.py", line 98, in evaluate ner_results = model.evaluate(sess, data, id_to_tag) File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/model.py", line 402, in evaluate raise e File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/model.py", line 390, in evaluate pred = iobes_iob([id_to_tag[int(x)] for x in batch_paths[i][:lengths[i]]]) File "/home/sunchao/code/git/Information-Extraction-Chinese/NER_IDCNN_CRF/model.py", line 390, in pred = iobes_iob([id_to_tag[int(x)] for x in batch_paths[i][:lengths[i]]]) KeyError: 6

forconz commented 5 years ago

@SUNCHAO1212 你的问题解决了吗?我现在也是头疼这个标注的问题。

请输入测试句子:近日,腾讯以近18亿美元入股特斯拉成第五大股东的消息引发了外界大量猜测和热议。 {'string': '近日,腾讯以近18亿美元入股特斯拉成第五大股东的消息引发了外界大量猜测和热议。', 'entities': [{'word': '特斯拉', 'start': 14, 'end': 17, 'type': 'LOC'}]}

我这边的标注是按这个JSON生成了,就是选择实体,然后标记为ORG,LOC等 现在的问题,就是不知道怎么生成这个训练用的数据

forconz commented 5 years ago

腾讯和特斯拉都是ORG,但是这个源代码只识别出特斯拉,而且类型弄成LOC了,不知道如何改善,应该是重新做训练

JackySnake commented 5 years ago

要想训练自己的ner的话,要先做好自己的标注数据,然后还要改一点代码就可以了