使用 Python 從文字中提取位置
在 Python 中,我們可以使用 Python 中可用的 NLP 庫(如 NLTK、spaCy 和 TextBlob)從文字中提取位置。從文字中提取位置用於各種自然語言處理任務,例如情感分析、資訊檢索和社交媒體分析。在本文中,我們將討論如何使用 spaCY 庫從文字中提取位置。
先決條件
安裝 spaCY 庫
在使用 scpaCy 庫進行提取過程之前,您需要使用 Python 中的 pip 命令安裝 spaCy 庫。要提取 spaCy 庫,您可以在終端或命令提示符中鍵入以下命令。
pip install spacy
下載預訓練的英語模型
spaCy 提供了用於命名實體識別 (NER) 的預訓練模型。命名實體識別是從文字中識別和分類命名實體(例如人、組織和位置)的過程。SpaCy 提供了一個預訓練的 NER 模型,可用於從文字中提取位置。
您可以使用以下命令安裝預訓練的英語模型:
python -m spacy download en_core_web_sm
從文字中提取位置
演算法
以下是使用 spaCy 從文字中提取位置的一般演算法:
匯入 **spaCy** 庫
使用 **spacy.load()** 載入預訓練的英語模型
定義包含位置提到的文字字串
透過將文字傳遞給 nlp() 函式建立 **spaCy Doc** 物件
使用 **doc.ents** 屬性迴圈遍歷文件中的實體
檢查實體標籤是否為 **'GPE'**(地理政治實體)
如果實體標籤為“GPE”,則使用 entity.text 屬性提取實體的文字
將提取的位置儲存在列表或其他合適的資料結構中
可選:手動驗證提取的位置
根據需要使用提取的位置進行進一步分析或處理。
使用 Spacy 庫
我們首先匯入 spaCy 庫並載入預訓練的英語模型。然後,我們定義一個包含位置提到的文字字串。我們使用 nlp() 函式建立 spaCy Doc 物件並將文字傳遞給它。然後,我們使用 doc.ents 屬性迴圈遍歷文件中的實體。對於每個實體,我們檢查實體標籤是否為“GPE”(代表地理政治實體),如果是,則列印實體的文字。
語法
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(text)
在這裡,我們首先匯入 spaCy 庫並使用 **spacy.load()** 函式載入預訓練的英語模型。然後,我們透過將文字字串傳遞給 **spacy.load()** 函式建立 spaCy Doc 物件。**nlp()** 函式將語言處理任務管道(如分詞、詞性標註和命名實體識別)應用於文字。生成的 Doc 物件包含已處理的文字及其註釋,可以使用各種屬性和方法訪問這些註釋。
示例
在下面的示例中,我們採用示例文字並從中提取位置。首先,使用 spacy.load() 載入 en_core_web_sm 模型。文字“我去年夏天去了紐約市並參觀了自由女神像”使用載入的模型進行處理,生成一個 doc 物件。然後,程式碼迭代文件中識別的實體,如果實體標籤為“GPE”(地理政治實體),則列印相應的文字,在本例中為“紐約市”。
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I went to New York City last summer and visited the Statue of Liberty."
doc = nlp(text)
for entity in doc.ents:
if entity.label_ == 'GPE':
print(entity.text)
輸出
New York City
提取多個位置
文字可能在完整句子中包含多個位置。我們可以使用 spaCy 從文字中提取所有位置。
示例
在下面的示例中,定義的文字包含三個位置的提及:“巴黎”、“倫敦”和“悉尼”。我們再次使用 nlp() 函式建立 spaCy Doc 物件並將文字傳遞給它。然後,我們迴圈遍歷文件中的實體並檢查實體標籤是否為“GPE”。如果是,則列印實體的文字。
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I love traveling to Paris and London. I also enjoy visiting Sydney."
doc = nlp(text)
for entity in doc.ents:
if entity.label_ == 'GPE':
print(entity.text)
輸出
Paris London Sydney
結論
在本例中,我們討論瞭如何使用 Python 中的 spaCy 庫從文字中提取位置。SpaCy 提供了一個預訓練的 NER 模型,可用於從文字中提取位置。SpaCy 還可用於提取單個文字中存在的多個位置。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP