簡體   English   中英

固定模式的Python-crfsuite標簽

[英]Python-crfsuite labeling in fixed pattern

我正在嘗試創建一個將日文句子分割成單詞的CRF模型。 目前,我並不擔心完美的結果,這只是一個測試。 訓練進行得很好,但是當它完成時,它總是會為我嘗試標記的每個句子給出相同的猜測。

"""Labels: X: Character is mid word, S: Character starts a word, E:Character ends a word, O: One character word"""
    Sentence:広辭苑や大辭泉には次のようにある。
    Prediction:['S', 'X', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E']
    Truth:['S', 'X', 'E', 'O', 'S', 'X', 'E', 'O', 'O', 'O', 'O', 'S', 'E', 'O', 'S', 'E', 'O']
    Sentence:他にも、言語にはさまざまな分類がある。
    Prediction:['S', 'X', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E', 'S', 'E']
    Truth:['O', 'O', 'O', 'O', 'S', 'E', 'O', 'O', 'S', 'X', 'X', 'X', 'E', 'S', 'E', 'O', 'S', 'E', 'O']

查看模型的轉換信息時:

{('E', 'E'): -3.820618,
 ('E', 'O'): 3.414133,
 ('E', 'S'): 2.817927,
 ('E', 'X'): -3.056175,
 ('O', 'E'): -4.249522,
 ('O', 'O'): 2.583123,
 ('O', 'S'): 2.601341,
 ('O', 'X'): -4.322003,
 ('S', 'E'): 7.05034,
 ('S', 'O'): -4.817578,
 ('S', 'S'): -4.400028,
 ('S', 'X'): 6.104851,
 ('X', 'E'): 4.985887,
 ('X', 'O'): -5.141898,
 ('X', 'S'): -4.499069,
 ('X', 'X'): 4.749289}

這看起來不錯,因為所有帶有負值的轉換都是不可能的,例如,E-> X,從單詞的結尾到下一個單詞的中間。 S-> E gets具有最高值,並且如上圖所示,該模型只是反復進入依次標記為S和E的模式,直到句子結束。 嘗試此演示時,我遵循了此演示 ,盡管該演示用於分隔拉丁語。 我的特征類似地只是n-gram:

['bias',
 'char=ま',
 '-2-gram=さま',
 '-3-gram=はさま',
 '-4-gram=にはさま',
 '-5-gram=語にはさま',
 '-6-gram=言語にはさま',
 '2-gram=まざ',
 '3-gram=まざま',
 '4-gram=まざまな',
 '5-gram=まざまな分',
 '6-gram=まざまな分類']

我嘗試過將標簽更改為開始和其他位置的S和X,但這只會導致模型重復S,X,S,X,直到用完字符為止。 我在兩個方向上的重量都增加了6克,這花費了更長的時間,但沒有改變任何東西。 嘗試訓練更多迭代並稍微更改L1和L2常數。 我已經接受了多達100,000個句子的培訓,這幾乎是我所能做的,因為我幾乎要用掉所有16GB的內存。 我的功能結構是否錯誤? 我如何使模型停止以某種模式進行猜測,即使發生了什么? 非常感謝您的幫助,如果需要向問題添加更多信息,請告訴我。

原來我錯過了一步。 我將原始句子傳遞給標記器而不是傳遞特征,因為CRF顯然可以接受字符串,就好像它是幾乎沒有特征的條目的列表一樣,它只是默認猜測最高等級的過渡,而不是引發錯誤。 我不確定這是否會幫助其他人,因為這是一個愚蠢的錯誤,但是我會在這里回答,直到我決定是否要刪除此問題為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM