stephen-v / zh-NER-keras

details
https://www.cnblogs.com/vipyoumay/p/ner-chinese-keras.html
264 stars 115 forks source link

测试集数据 #3

Open Mariobai opened 6 years ago

Mariobai commented 6 years ago

你能说一下测试集原始数据是什么样的格式吗?就是没有做预测之前的格式是什么样子的?

luvensaitory commented 6 years ago

讀作者的code就能了解數據的格式了。 在process_data.py檔案裡。

稍微解釋一下。

原始數據

老 B-PER 王 I-PER 很 O 喜 O 歡 O 中 B-LOC 國 I-LOC 妹 O 子 O

要丟進LSTM的數據

X_train應該是長這樣[0, 1, 15, 24, 65, 102, 103, 54, 63]之類的,這裡代表每個字的index。 y_train應該是長這樣 [1, 2, 0, 0, 0, 3, 4, 0, 0]之類的,代表對應到的字的NE。 最後再把每個句子做個padding就能丟進LSTM了。

至於怎麼轉換成數據序列的,就請您自行研究研究process_data.py唄!

Sallylearning commented 6 years ago

@luvensaitory BLSTM不是可以自动标注吗?这么做感觉就是自己标注好语料库,然后让机器去学习,训练模型。我看论文,感觉是有BLSTM来训练语料,CRF约束标注语料,然后识别实体

luvensaitory commented 6 years ago

@Sallylearning 大神您有見過不用訓練集就能產生模型的機器嗎?您說的自動標註應該是完成的模型能自動標註吧? 那因為 @Mariobai 只有詢問資料格式,所以我就沒有講到CRF的部分,就像作者博客寫的LSTM有時候會有I-LOC接I-PER這種不可能的情形,所以才要在LSTM的輸出層再接CRF層,讓模型能避免到這個錯誤。這個部分是在bilstm_crf_model.py裡面。

Sallylearning commented 6 years ago

@luvensaitory 我没有质问你的意思,我是正好有点不懂,所以向您询问一下…… 主要是我之前的理解是训练集是没有标注的,因为我觉得既然训练集都是标注好的,那么所谓的神经网络可以解决人工标注少的问题那不就没有解决?因为你自己还不是要自己标注才能去训练…… 我看process_data.py,又感觉是在这里面标注,我就有点困惑了,所以训练集到底需不需要标注?但是不标注他怎么知道我某个字可以被标注为某个tag

luvensaitory commented 6 years ago

@Sallylearning 沒事沒事,別緊張,我沒有發怒,是我表達能力不好,不好意思了。

這個模型主要是拿來做命名實體辨別(NER)的,辨識句子中的人物地點組織名。這在NLP裡面是蠻重要的課題。今天對於一個自然文本,需要找出相關的命名實體與它的位置,而專有名詞有非常多種,網民今天搞不好又多了新的網路用語,或是一般對於地理位置的簡稱,珠三角,北上廣等等。那這部分斷詞是無法斷出來的。 所以我想妳說的減少人工標註應該是指對於斷詞出來的結果做NE的標註吧?

Sallylearning commented 6 years ago

@luvensaitory 我理解了,那这个所谓的减少人工标注,是这个能对新词自动标注并识别?并不是所谓的全部机器标注。 所以我们还是要先标注一部分语料,然后一部分训练模型,一部分来验证我们的模型,看准确率什么的。这个就比单纯的CRF模型多了可以根据上下文来判断该词是否该被标注为某个tag?这么一想,感觉这个模型都不怎么厉害了……

stephen-v commented 6 years ago

在data文件夹下有我所使用的开源数据集,你可以看下