簡體   English   中英

如何使用 SpaCy 更改自定義 NER model 再訓練的訓練數據格式?

[英]How to change the format of training data for custom NER model retraining using SpaCy?

我正在解決這個問題,其中文本數據位於文檔文件中,生成的 5 個標簽位於 csv 文件中。 因此,要訓練spaCy NER model,我們必須將 dtaa 標記為:

TRAIN_DATA = [
    ("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
    ("I like London and Berlin.", {"entities": [(7, 13, "LOC"), (18, 24, "LOC")]}),
]

但我的數據在 csv 文件中,例如:

在此處輸入圖像描述

我寫了一個 function 它將搜索文本中第一次出現的col query並添加長度。 就像是:

train_data = []
for i,index in enumerate(df.index.tolist()):
    row_data = df.iloc[i,:].values.tolist()
    entities = {"entities":[]}
    for file in dir_files:
        if file.split('.')[0] == row_data[0]:
            text = preprocess(textract.process("./Training_data/"+file))
            
            for j,entry in enumerate(row_data[1:]):
                
                if not pd.isna(entry):
                    if isinstance(entry,str): # takes care of null values
                        entities['entities'].append((text.find(str(entry).strip()),len(str(entry)),ent_names[j]))

結果是

{'entities': [(-1, 7, 'Aggrement Value'),
  (-1, 10, 'Aggrement Start Date'),
  (-1, 10, 'Aggrement End Date'),
  (-1, 4, 'Renewal Notice (Days)'),
  (124, 22, 'Party One'),
  (540, 45, 'Party Two')]}

它為STRING提供了不錯的結果,但我在日期方面遇到了一個巨大的問題,因為格式為12.08.2018 ,價格為格式6000.00 我無法直接比較,所以我必須更改價格str(int(price))然后匹配。 它會起作用,但日期永遠不會采用 CSV 中給出的格式。 這就像1stDAY OF SEPTEMBER 2018 TWO THOUSAND EIGHTEEN 我應該如何以格式標記那個?

我嘗試使用Spacy's內置 NER 以便我能夠弄清楚,但它並沒有給我帶來好的結果。

nlp = spacy.load('en_core_web_sm')
doc = nlp(preprocess(text))
displacy.render(nlp(doc.text),style='ent',jupyter=True)

它給了我類似的東西:

在此處輸入圖像描述

我如何標記我的數據,因為如果沒有正確標記日期,這一切都是徒勞的,因為無論如何它都不會學會獲取日期。 是否有任何Regular expression RE或者我看到基於 NLTK POS 的查詢來提取 NER給了我們類似的東西:

在此處輸入圖像描述

如果我正確理解您的問題,您需要穩健地解析主要以全文形式給出的日期。

要標准化此類日期,您可以嘗試使用dateutilmayapendulumarrow庫之一。 您可以在此處找到這些庫的可能性的良好演示。

如果您的問題也是在文本中標記日期,它會更加細微,如果 SpaCy / NLTK 不適合您的目的,您將不得不訓練這樣的 model。 理論上,您還可以實現許多正則表達式,但這很容易出錯並且需要幾個月才能完成。 AFAIK,沒有可用的強大實現。

暫無
暫無

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

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