Python的Spacy

慕尘發表於2024-04-25

spaCy是一個基於Python編寫的開源自然語言處理庫。

基於自然處理領域的最新研究,spaCy提供了一系列高效且易用的工具,用於文字預處理、文字解析、命名實體識別、詞性標註、句法分析和文字分類等任務。

安裝

pip install spacy

檢視版本

import spacy 
print(spacy.__version__)

安裝中文模型

python -m spacy download zh_core_web_sm  

注:

  安裝可能會失敗,可採用離線安裝

  下載 https://github.com/explosion/spacy-models/releases

 pip install zh_core_web_sm-3.7.0.tar.gz

1.分詞

test.py

import spacy 
# 中文文字,需要載入中文模型
nlp = spacy.load("zh_core_web_sm")
text = "這是一句話啊."
doc = nlp(text)
for token in doc:
    print(token.text)

python test.py

這是
一句話

.

2.標註詞性

import spacy 
# 中文文字,需要載入中文模型
nlp = spacy.load("zh_core_web_sm")
text = "這是一句話啊."
doc = nlp(text)
# 分詞
tokens = [token.text for token in doc]
print("分詞結果:", tokens)

# 詞性標註
pos_tags = [(token.text, token.pos_) for token in doc]
print("詞性標註結果:", pos_tags)

python test.py
分詞結果: ['這是', '一句話', '啊', '.']
詞性標註結果: [('這是', 'VERB'), ('一句話', 'NOUN'), ('啊', 'PART'), ('.', 'PUNCT')]

3.實體識別

import spacy 
# 中文文字,需要載入中文模型
nlp = spacy.load("zh_core_web_sm")
text = "濟南是個美麗的城市."
doc = nlp(text)
# 實體識別
entities = [(ent.text, ent.label_) for ent in doc.ents]
print("實體識別結果:", entities)

python test.py
實體識別結果: [('濟南', 'GPE')]

說明:

  GPE 地點性實體(Geo-Political Entity)

4.依存關係分析

import spacy 
# 中文文字,需要載入中文模型
nlp = spacy.load("zh_core_web_sm")
text = "濟南是個美麗的城市."
doc = nlp(text)
#依存關係分析
dependency_tree = [(token.text, token.dep_, token.head.text) for token in doc]
print("依存關係分析結果:", dependency_tree)

python test.py
依存關係分析結果: [('濟南', 'nsubj', '城市'), ('是', 'cop', '城市'), ('個', 'nummod', '城市'), ('美麗', 'amod', '城市'), ('的', 'mark', '美麗'), ('城市', 'ROOT', '城市'), ('.', 'punct', '城市')]

相關文章