[英]How does this for loop work in Spacy's custom NER training code?
我正在編寫代碼來訓練 Spacy 的 NER 引擎中的自定義實體。 我一直在理解在線教程中的一小部分代碼。 這是教程的鏈接。 以下是代碼,我無法理解注釋# add labels
下的兩個 for 循環。 我是 python 的新手。
import spacy
################### Train Spacy NER.###########
def train_spacy():
TRAIN_DATA = convert_dataturks_to_spacy("dataturks_downloaded.json");
nlp = spacy.blank('en') # create blank Language class
# create the built-in pipeline components and add them to the pipeline
# nlp.create_pipe works for built-ins that are registered with spaCy
if 'ner' not in nlp.pipe_names:
ner = nlp.create_pipe('ner')
nlp.add_pipe(ner, last=True)
# add labels
for _, annotations in TRAIN_DATA:
for ent in annotations.get('entities'):
ner.add_label(ent[2])
顯然,這個 for 循環正在向 NER 添加自定義標簽。 我的問題是;
您的問題大多可以通過了解 function convert_dataturks_to_spacy
來回答。 此代碼與您正在遵循的教程位於同一存儲庫中。
(text, {"entities": entities})
。 annotations
是每個元組的第二個元素。_
,將第二個元素分配給annotations
,然后做一些事情。 在 python 中, _
經常用作一次性變量,即代碼中其他地方未使用但存在於數據中的變量。ent[2]
是被標記實體的 label。 查看代碼,dataturks 中的實體是具有 3 個元素的元組 - 字符串中的開頭 position、字符串中的結尾 position 和 label。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.