使用 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 還可用於提取單個文字中存在的多個位置。

更新於: 2023-07-10

2K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.