思路記錄

weixin_34320159發表於2018-06-06

1.用維基百科語料、待連結文件和知識庫語料,一起訓練一份詞向量。

2.用求詞向量平均的方法去表示知識庫中的實體向量,然後將待連結實體的向量加入知識庫實體向量表中,使用gensim給的similarity top n方法返回與待連結實體最相近的前30個實體ID。   --詞向量平均方法

3.將知識庫的實體和待連結實體的單詞進行串聯,得到實體的一個字串表示,更換語料中


4.候選集有兩份:通過維基百科硬匹配得到一個候選集year_houxuanji_wiki.txt;通過query自己查縮寫,非完全硬匹配,最小編輯距離得到一個候選集year_houxuanji_query.txt。

兩個候選集的合集,能達到的召回率為:

6102062-0c8b401de7ba5b62.png
wiki+query
6102062-70c0636effa028c8.png
wiki+query

目前暫定,為每個query篩選出30個候選集。   用平均詞向量的方法篩選:

6102062-0ab1d9d10b72d50d.png
生成結果存放在2009_result.txt
6102062-907674652848d47f.png
生成結果存放在2010_result.txt

所以還是將沒有選中的答案,也加入到候選集中。這樣是為了驗證模型是否有效。

必須去獲取候選集實體的上下文資訊。query自己的上下文資訊是否準備好???

1)準備query的上下文資訊

prepare_query_context.py

2)準備候選集的上下文資訊

那些候選集組成一個小的資料庫mindb(其實是根據候選集+答案,及其與其他實體之間的關係,形成了一個小型資料庫,所以每一年的資料都會形成這麼一個mindb)2009年 mindb dbnum=110382    2010年 mindb dbnum=118062

prepare_houxuanji_context.py  這個程式裡面其實包含了兩大部分,前一個大部分是生成mindb,然後將mindb的原始檔抽出來並存在...eval\\test_minDBText目錄資料夾下。   後一個大部分,是將這個原文字轉換成 屬性詞向量索引+關係實體向量索引。  !!!!注意:關係實體向量索引在這裡還是沒能完成,要通過db補全過程,然後才能產生實體關係索引。

db補全----《實體關係補全程式執行順序記錄---更新版》

1.伺服器上105節點    yao/entity/.....目錄下  有補全過程相關的程式程式碼。     萬能的bu_link_new.py 在原來的bu_link.py程式上修改了部分。

6102062-69d99fa3c34f1af8.png
bu_link.py   將修改成   bu_link_new.py  的原因

我想把所有沒有連結的實體的都補一下     補100種常見的關係,每種關係只補一個值。   BigDB裡沒有連結的實體有120213個

6102062-480fde4225a339df.png
6102062-8baa7e798cab02e1.png

注意:一個伺服器節點重複執行40個這個程式,導致多工間不斷的切換,白白浪費了時間。所以一個linux伺服器節點,最多執行10個左右程式。     !!!!!2018.06.07時間被程式在不任務的切換中白白浪費了。

6102062-472560d98e68e238.png
從28 到40

2018.06.10開始幹活:

1)bu_link.py增加了生成no_link_id_temp.txt的程式碼。09年+10年有1341個沒連結的實體。

6102062-cb32676b30a7db4f.png

2)補全實體過程,稍稍改了,在伺服器上分批執行produce_entity_db_index_new.py程式。

6102062-5adbc0d48b409fd8.png
等結果中。。。。

produce_entity_db_index_new.py程式結果執行完。上傳bu_link.py,在伺服器上執行得到bu_link.txt。

6102062-6e4bb636726858ef.png
伺服器上
6102062-a6419e55c93a4a47.png
當前補的閾值設定的是0.8

補全之後,應該是生成實體索引:

此處實驗不再生成小的mindb的實體向量檔案了。直接用整個資料庫的實體向量檔案生成實體索引。所以《實體關係補全程式執行順序記錄》裡的3、4小點使用的程式就不再使用了!!!!!自己寫一個新的。參照4小點的produce_entity_index.py改寫。

bu_DBIndexAll.txt   沒有在實體向量表中出現的實體索引為0。

6102062-58a7c250d059779d.png




該準備訓練集了。。。。。。有點麻煩

好像能用原來準備的。 ------不能,因為詞向量也換了,所以索引不對。

6102062-44de395c58915573.png
!!!!要變  train_queryTextIndex.txt 和 vector_100.txt都要變   因為詞向量變了

當前新版的詞向量:用維基百科語料、待連結文件和知識庫語料,一起訓練一份詞向量。

6102062-9b21e5534a8a3a25.png

根據data_analysis/word2vec/prepare_query_context.py 改寫一份prepare_train_context.py

1)需要生成訓練集答案檔案 2014_train_answer.txt

在mypython_workspace/findHouXuanJi_2/目錄下query_dbAnswer01.py能夠生成2014_answer.txt 稍作修改(刪掉第一行,然後把名字改為2014_train_answer.txt,複製到data_analysis/word2vec/目錄下)

6102062-c799a4613e335f82.png

2)需要生成訓練集的query_context詞索引

在data_analysis/word2vec/目錄下,改寫了一份prepare_train_context.py。   可以生成如下目錄裡的一些檔案

6102062-270f8f111695bc77.png
注意,在這個過程中程式執行出錯太多,所以該了一下14年training的training_queries.xml檔案的內容,所以以後要用得重新解壓縮

3)還需要生成訓練集的houxuanji_context詞索引

在data_analysis/word2vec/目錄下,改寫了一份prepare_train_houxuanji_context.py。   可以生成如下目錄裡的一些檔案

6102062-d0228f06f3323f9d.png

##############訓練集基本準備好2018年6月12日############接下來上傳相關資料到伺服器上,進行模型執行




然後參考《換份詞向量,程式執行記錄》裡的第五步:模型執行

模型執行打算在伺服器的/home/feng/yao/new_work/目錄下執行:

6102062-2c943f845e93bb35.png
1
6102062-a9c677707fb92427.png
2


6102062-58a9dc92ceb359a9.png
3
6102062-952291ab48bcc3cd.png
4
6102062-eed1415df5348845.png
5
6102062-610800f64a092921.png
6
6102062-1ae953aac4bad9fa.png
7