首頁  >  文章  >  後端開發  >  ETL:從文字中提取人名

ETL:從文字中提取人名

Linda Hamilton
Linda Hamilton原創
2024-10-08 06:20:30825瀏覽

假設我們想要抓取chicagomusiccompass.com

如您所見,它有幾張卡片,每張卡片代表一個事件。現在,讓我們來看看下一篇:

ETL: Extracting a Person

請注意,活動名稱是:


jazmin bean: the traumatic livelihood tour


現在的問題是:我們如何從文本中提取藝術家的名字?

作為一個人,我可以「輕鬆地」看出 jazmin bean 是藝術家——只需查看他們的 wiki 頁面即可。但編寫程式碼來提取該名稱可能會很棘手。

我們可能會想,“嘿,: 之前的任何內容都應該是藝術家的名字”,這看起來很聰明,對吧?它適用於這種情況,但是這個呢:


happy hour on the patio: kathryn & chris


這裡,順序顛倒了。我們可以不斷添加邏輯來處理不同的情況,但很快我們就會得到大量脆弱的規則,並且可能無法涵蓋所有內容。

這就是命名實體辨識(NER)模型派上用場的地方。它們是開源的,可以幫助我們從文字中提取名稱。它不會捕捉所有案例,但大多數時候,他們都會為我們提供所需的資訊。

透過這種方法,提取變得更加容易。我選擇 Python 是因為 Python 機器學習社群是無與倫比的。


from gliner import GLiNER

model = GLiNER.from_pretrained("urchade/gliner_base")

text = "jazmin bean: the traumatic livelihood tour"
labels = ["person", "bands", "projects"]
entities = model.predict_entities(text, labels)

for entity in entities:
    print(entity["text"], "=>", entity["label"])


產生輸出:


jazmin bean => person


現在,讓我們來看看另一個案例:


happy hour on the patio: kathryn & chris


輸出:


kathryn => person
chris => person


來源-GLiNER

太棒了,對吧?不再需要繁瑣的邏輯來提取名稱,只需使用模型即可。當然,它不會涵蓋所有可能的情況,但對於我的專案來說,這種靈活性就很好了。如果您需要更高的準確性,您可以隨時:

  • 嘗試不同的模型
  • 對現有模型做出貢獻
  • 分叉項目並調整它以滿足您的需求

結論

身為軟體開發人員,強烈建議隨時了解機器學習領域的工具。並不是所有事情都可以透過簡單的程式設計和邏輯來解決 - 有些挑戰可以使用模型和統計來更好地解決。

以上是ETL:從文字中提取人名的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn