簡體   English   中英

我可以在crf模型中使用數字特征嗎?

[英]can I use numerical features in crf model

在crf模型中添加數字特征是否可行/好? 例如,序列中的位置。

我正在使用CRFsuite 似乎所有的特征都將被轉換為字符串,例如'pos = 0','pos = 1',然后失去它作為歐幾里德距離的含義。

或者我應該用它們訓練另一個模型,例如svm,然后用crf模型合奏?

我發現CRFsuite確實處理了數字特征,至少根據這個文檔

  • {“string_key”:float_weight,...} dict其中鍵被觀察到的特征和值是它們的權重;
  • {“string_key”:bool,...} dict; True轉換為1.0重量,False - 轉換為0.0;
  • {“string_key”:“string_value”,...} dict; 這與{“string_key = string_value”相同:1.0,...}
  • [“string_key1”,“string_key2”,...]列表; 這與{“string_key1”:1.0,“string_key2”:1.0,...}相同
  • {“string_prefix”:{...}} dicts:處理嵌套的dict,並為每個鍵添加“string_prefix”。
  • {“string_prefix”:[...]} dicts:處理嵌套列表,並為每個鍵添加“string_prefix”。
  • {“string_prefix”:set([...])} dicts:處理嵌套列表,並為每個鍵添加“string_prefix”。

只要:

  1. 我保持輸入格式正確;
  2. 我使用float vs float的字符串;
  3. 我規范它。

CRF本身可以使用數字特征,你應該使用它們,但如果你的實現將它們轉換為字符串(通過“一個熱點編碼”以二進制形式編碼),那么它的重要性可能會降低。 我建議尋找更多“純粹”的CRF,它允許連續變量。

一個有趣的事實是CRF的核心只是結構化的MaxEnt(LogisticRegression),它在連續域中工作 ,這種字符串編碼實際上是一種從分類值到連續域的方式,所以你的問題實際上是CRFSuite“過度設計”的結果忘記了CRF模型的實際功能。

只是為了澄清一點Lishu的答案(這是正確的,但可能會混淆其他讀者,因為它對我來說,直到我嘗試它)。 這個:

{“string_key”:float_weight,...} dict其中鍵被觀察到的特征和值是它們的權重

本來可以寫成

{“feature_template_name”:feature_value,...} dict其中鍵是要素名稱,值是其值

即,使用此功能,您不會設置與此feature_template對應的CRF的權重,而是設置此功能的值。 我更喜歡將它們稱為具有特征值的特征模板,以便一切都比“特征”更清晰。 然后,CRF將學習與此feature_template的每個可能feature_values相關聯的權重

暫無
暫無

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

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