假設我們想要抓取chicagomusiccompass.com。
如您所見,它有幾張卡片,每張卡片代表一個事件。現在,讓我們來看看下一篇:
請注意,活動名稱是:
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中文網其他相關文章!