2 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以構(gòu)建自己的自定義分類器(按照 polm23 的建議),但考慮到您是 NLP 新手,這可能過于復(fù)雜且耗時(shí)。
一種令人興奮的新方法是所謂的“零樣本分類”。這基本上意味著您采用其他人以非常通用的方式預(yù)先訓(xùn)練的通用機(jī)器學(xué)習(xí)模型進(jìn)行文本分類,并且您只需將其應(yīng)用到您的特定用例,而無需訓(xùn)練/微調(diào)它。
具體應(yīng)用于您的用例,這看起來像這樣:
# pip install transformers==3.1.0? # pip install in terminal
from transformers import pipeline
classifier = pipeline("zero-shot-classification")
sequence = "The biggest elephant in the world"
candidate_labels = ["animals", "fruits", "diseases"]
classifier(sequence, candidate_labels)
# output: {'sequence': 'The biggest elephant in the world',?
# 'labels': ['animals', 'diseases', 'fruits'],?
# 'scores': [0.9948041439056396, 0.0035726651549339294, 0.0016232384368777275]}
如果您希望算法為文本分配多個(gè)標(biāo)簽,您可以激活多標(biāo)簽分類,它會(huì)為每個(gè)文本考慮多個(gè)標(biāo)簽。
sequence = "I like mangos and gorillas"
candidate_labels = ["animals", "fruits", "diseases"]
classifier(sequence, candidate_labels, multi_class=True)
# output: {'sequence': 'I like mangos and gorillas',?
# 'labels': ['animals', 'fruits', 'diseases'],?
# 'scores': [0.9978452920913696, 0.989518404006958, 0.00015786082076374441]}
=>用你的話來說:它為每個(gè)文本“創(chuàng)建一個(gè)‘標(biāo)簽列表’”。即對(duì)于每個(gè)預(yù)定義標(biāo)簽,它提供一個(gè)置信度分?jǐn)?shù),然后您可以為“真實(shí)標(biāo)簽列表”選擇具有最高置信度分?jǐn)?shù)的標(biāo)簽。
我測(cè)試了它,實(shí)際輸出在上面的代碼中。它對(duì)所有內(nèi)容進(jìn)行了正確分類:)
它在其他用例上進(jìn)行了嘗試,雖然不是 100% 準(zhǔn)確,但它相當(dāng)不錯(cuò),因?yàn)榇a非常簡(jiǎn)單,而且您不必自己訓(xùn)練模型。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
你要做的就是所謂的多標(biāo)簽分類。您的“標(biāo)簽”是labels,每個(gè)文檔可以有多個(gè)標(biāo)簽。
實(shí)現(xiàn)此目的的典型方法是為每個(gè)標(biāo)簽訓(xùn)練二元分類器,然后將預(yù)測(cè)中高于閾值的標(biāo)簽視為陽性。
spaCy 支持多標(biāo)簽分類。
添加回答
舉報(bào)