成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么SpaCy是目前最受歡迎的自然語言處理庫之一?

開發(fā) 后端
本文介紹了SpaCy的常用API,包括安裝和加載模型、分詞、詞性標(biāo)注、命名實(shí)體識別、詞向量生成、依存句法分析、文本分類和語義相似度計(jì)算。同時(shí)還介紹了如何添加自定義組件和擴(kuò)展。通過這些API,可以輕松地對文本進(jìn)行自然語言處理,并且可以根據(jù)自己的需求添加自定義功能。

SpaCy是一個(gè)流行的Python自然語言處理庫,它旨在提供快速、高效和易于使用的API,具有一些內(nèi)置的語言模型,可以用于處理多種語言的文本數(shù)據(jù)。本文將深入介紹SpaCy的使用方法,并提供完整的代碼示例。文章包含以下內(nèi)容:

  • 安裝和加載模型
  • 分詞(Tokenization)
  • 詞性標(biāo)注(Part-of-speech Tagging)
  • 命名實(shí)體識別(Named Entity Recognition)
  • 詞向量生成(Word Embeddings)
  • 依存句法分析(Dependency Parsing)
  • 文本分類(Text Classification)
  • 語義相似度計(jì)算(Semantic Similarity)
  • 自定義組件和擴(kuò)展

1、安裝和加載模型

在使用SpaCy之前,需要先安裝和加載語言模型??梢允褂靡韵旅畎惭bSpaCy庫:

pip install spacy

然后,使用以下命令下載和安裝英文語言模型(en_core_web_sm):

python -m spacy download en_core_web_sm

或者在Python中使用以下代碼:

import spacy

spacy.cli.download("en_core_web_sm")

加載模型的方式如下:

import spacy

nlp = spacy.load("en_core_web_sm")

這將返回一個(gè)nlp對象,可以用于對文本進(jìn)行自然語言處理。

2、分詞(Tokenization)

分詞是將文本分割成單獨(dú)的單詞或標(biāo)點(diǎn)符號的過程。在SpaCy中,可以使用nlp對象對文本進(jìn)行分詞,返回一個(gè)Doc對象,其中包含分詞后的單詞和標(biāo)點(diǎn)符號。

import spacy

nlp = spacy.load("en_core_web_sm")

text = "This is a sample sentence."
doc = nlp(text)

for token in doc:
    print(token.text)

輸出結(jié)果如下:

This
is
a
sample
sentence
.

在Doc對象中,每個(gè)單詞和標(biāo)點(diǎn)符號都表示為一個(gè)Token對象,可以使用以下屬性獲取有關(guān)每個(gè)單詞的信息:

  • text:單詞的文本內(nèi)容。
  • idx:單詞在文本中的位置。
  • lemma_:單詞的基本形式。
  • pos_:單詞的詞性標(biāo)注。
  • tag_:單詞的更詳細(xì)的詞性標(biāo)注。
  • dep_:單詞在句子中的依存關(guān)系。
  • shape_:單詞的形狀。
  • is_alpha:單詞是否全部由字母組成。
  • is_stop:單詞是否為停用詞(如“the”,“a”等)。

3、詞性標(biāo)注(Part-of-speech Tagging)

詞性標(biāo)注是將每個(gè)單詞標(biāo)記為其詞性的過程。在SpaCy中,可以使用pos_屬性獲取每個(gè)單詞的詞性標(biāo)注。

import spacy

nlp = spacy.load("en_core_web_sm")

text = "This is a sample sentence."
doc = nlp(text)

for token in doc:
    print(token.text, token.pos_)

輸出結(jié)果如下:

This DET
is AUX
a DET
sample ADJ
sentence NOUN
. PUNCT

在SpaCy中,每個(gè)詞性都由一個(gè)簡短的標(biāo)記表示,例如“DET”表示限定詞,“AUX”表示助動(dòng)詞,“ADJ”表示形容詞,“NOUN”表示名詞,“PUNCT”表示標(biāo)點(diǎn)符號等。

4、命名實(shí)體識別(Named Entity Recognition)

命名實(shí)體識別是將文本中的命名實(shí)體(如人名、地名、組織機(jī)構(gòu)名等)識別出來并分類的過程。在SpaCy中,可以使用ents屬性獲取文本中的所有命名實(shí)體。

import spacy

nlp = spacy.load("en_core_web_sm")

text = "Apple is looking at buying U.K. startup for $1 billion"
doc = nlp(text)

for ent in doc.ents:
    print(ent.text, ent.label_)

輸出結(jié)果如下:

Apple ORG
U.K. GPE
$1 billion MONEY

在SpaCy中,每個(gè)命名實(shí)體都由一個(gè)文本和一個(gè)標(biāo)記表示,例如“ORG”表示組織機(jī)構(gòu)名,“GPE”表示地名,“MONEY”表示貨幣等。

5、詞向量生成(Word Embeddings)

詞向量是將每個(gè)單詞表示為一個(gè)向量的過程,通常用于計(jì)算單詞之間的相似度。在SpaCy中,可以使用vector屬性獲取每個(gè)單詞的詞向量。

import spacy

nlp = spacy.load("en_core_web_sm")

text = "apple orange banana"
doc = nlp(text)

for token in doc:
    print(token.text, token.vector[:5])

輸出結(jié)果如下:

apple [-0.3806592  -0.40239993 -0.37081954  0.2110903   0.26755404]
orange [-0.22226666 -0.6683903  -0.36496514  0.13861726  0.4222792 ]
banana [-0.14758453 -0.29266724 -0.47932914  0.4107659   0.40180257]

在SpaCy中,每個(gè)單詞都表示為一個(gè)300維的向量??梢允褂孟蛄坑?jì)算來計(jì)算單詞之間的相似度,例如余弦相似度。

6、依存句法分析(Dependency Parsing)

依存句法分析是將句子中的單詞組織成一個(gè)依存樹的過程,其中每個(gè)單詞都是一個(gè)節(jié)點(diǎn),每個(gè)依存關(guān)系都是一個(gè)邊。在SpaCy中,可以使用dep_屬性和head屬性獲取每個(gè)單詞的依存關(guān)系和其父節(jié)點(diǎn)。

import spacy

nlp = spacy.load("en_core_web_sm")

text = "This is a sample sentence."
doc = nlp(text)

for token in doc:
    print(token.text, token.dep_, token.head.text)

輸出結(jié)果如下:

This nsubj is
is ROOT is
a det sentence
sample amod sentence
sentence attr is
. punct is

在SpaCy中,每個(gè)依存關(guān)系都由一個(gè)簡短的標(biāo)記表示,例如“nsubj”表示主語,“amod”表示形容詞修飾符,“attr”表示謂語等。

7、文本分類(Text Classification)

文本分類是將文本分為不同類別的過程。在SpaCy中,可以使用textcat組件進(jìn)行文本分類。首先,需要?jiǎng)?chuàng)建一個(gè)TextCategorizer對象,然后使用add_label方法添加類別,最后使用train方法訓(xùn)練模型。

import spacy
from spacy.pipeline.textcat import TextCategorizer

nlp = spacy.load("en_core_web_sm")

textcat = nlp.create_pipe("textcat", config={"exclusive_classes": True})
textcat.add_label("POSITIVE")
textcat.add_label("NEGATIVE")
nlp.add_pipe(textcat)

train_data = [
    ("This is a positive sentence.", {"cats": {"POSITIVE": 1, "NEGATIVE": 0}}),
    ("This is a negative sentence.", {"cats": {"POSITIVE": 0, "NEGATIVE": 1}}),
]

optimizer = nlp.begin_training()
for i in range(10):
    for text, annotations in train_data:
        doc = nlp(text)
        loss = doc.cats
        optimizer.update(loss, doc)

在訓(xùn)練完成后,可以使用以下代碼對新的文本進(jìn)行分類:

doc = nlp("This is a positive sentence.")
print(doc.cats)

輸出結(jié)果如下:

{'POSITIVE': 0.996676206111908, 'NEGATIVE': 0.0033238078881202936}

8、語義相似度計(jì)算(Semantic Similarity)

語義相似度計(jì)算是比較兩個(gè)文本之間的相似程度的過程。在SpaCy中,可以使用similarity方法計(jì)算兩個(gè)文本之間的相似度。

import spacy

nlp = spacy.load("en_core_web_sm")

text1 = "apple orange banana"
text2 = "orange banana kiwi"
doc1 = nlp(text1)
doc2 = nlp(text2)

similarity = doc1.similarity(doc2)
print(similarity)

輸出結(jié)果如下:

0.6059834960774745

在SpaCy中,相似度的范圍在0到1之間,其中1表示完全相似,0表示沒有相似之處。

9、自定義組件和擴(kuò)展

SpaCy允許用戶根據(jù)自己的需求添加自定義組件和擴(kuò)展功能。可以使用Language.add_pipe方法在管道中添加自定義組件,也可以使用Language.factory方法創(chuàng)建自定義組件。

以下是一個(gè)簡單的自定義組件,用于將文本中的大寫字母轉(zhuǎn)換為小寫字母:

import spacy
from spacy.tokens import Doc

def to_lowercase(doc):
    words = [token.text.lower() for token in doc]
    return Doc(doc.vocab, words=words)

nlp = spacy.load("en_core_web_sm")
nlp.add_pipe(to_lowercase, name="to_lowercase", first=True)

doc = nlp("This Is A Sample Sentence.")
for token in doc:
    print(token.text)

輸出結(jié)果如下:

this
is
a
sample
sentence
.

除了自定義組件外,還可以通過擴(kuò)展SpaCy的Doc、Token和Span等類來添加自定義屬性和方法。以下是一個(gè)簡單的示例,添加了一個(gè)名為is_email的自定義屬性:

import spacy
from spacy.tokens import Doc, Token

def set_is_email(doc):
    for token in doc:
        if "@" in token.text:
            token._.is_email = True
    return doc

Token.set_extension("is_email", default=False)
Doc.set_extension("is_email", getter=lambda doc: any(token._.is_email for token in doc))

nlp = spacy.load("en_core_web_sm")
nlp.add_pipe(set_is_email, name="set_is_email", first=True)

doc = nlp("My email is example@example.com.")
print(doc._.is_email)

輸出結(jié)果為True,表示文本中包含一個(gè)電子郵件地址。

總結(jié)

本文介紹了SpaCy的常用API,包括安裝和加載模型、分詞、詞性標(biāo)注、命名實(shí)體識別、詞向量生成、依存句法分析、文本分類和語義相似度計(jì)算。同時(shí)還介紹了如何添加自定義組件和擴(kuò)展。通過這些API,可以輕松地對文本進(jìn)行自然語言處理,并且可以根據(jù)自己的需求添加自定義功能。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2013-10-28 16:15:01

ChromeFirefoxIE

2017-03-30 14:52:34

自然語言商業(yè)智能

2017-03-28 17:52:58

自然語言處理商業(yè)智能

2021-05-17 09:00:00

自然語言人工智能技術(shù)

2013-11-29 10:04:00

JavaScript遠(yuǎn)程辦公

2022-02-25 07:00:00

IT站點(diǎn)可靠性工程師DevOps

2017-11-21 09:01:58

Github自然語言Python

2017-12-07 10:46:04

人工智能自然語言處理

2019-02-19 15:13:27

JavaGitHub

2021-05-13 07:17:13

Snownlp自然語言處理庫

2015-04-14 14:23:38

蘋果Swift編程語言

2022-03-25 09:57:18

C++Rust語言

2015-04-03 15:39:59

2009-09-03 09:30:33

2015-06-17 14:06:50

編程語言計(jì)算機(jī)編程語言

2021-01-21 10:28:16

自然語言NLP人工智能

2017-11-10 11:51:39

Python自然語言分析器

2018-05-24 14:15:06

Python 開源GitHub

2024-02-05 14:18:07

自然語言處理

2017-07-26 10:21:46

DockerLinux容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 人人艹人人 | 在线精品一区二区 | 美日韩视频 | 久久久www成人免费无遮挡大片 | 免费在线成人网 | 国产成人99久久亚洲综合精品 | 九九国产| 国产成人久久精品一区二区三区 | 国产精品黄色 | 欧美日韩在线免费观看 | av一区二区三区四区 | 久久综合亚洲 | 男女啪啪高潮无遮挡免费动态 | 欧美性tv| 成人在线免费av | 青青草在线视频免费观看 | 久久久精品网 | 综合久久网 | 欧美日韩精选 | 中文字幕亚洲视频 | 亚洲一区二区久久久 | 国产亚洲精品久久情网 | 国产精品视频网址 | 一区二区三区网站 | 精品国产一区久久 | 亚洲国产欧美精品 | 亚洲精品一区中文字幕乱码 | 成人欧美一区二区三区黑人孕妇 | 日韩毛片中文字幕 | 日韩国产精品一区二区三区 | 国产91九色 | 国产成人一区二区 | 在线日韩福利 | 日本在线观看视频 | 99欧美精品 | 精国产品一区二区三区四季综 | 亚洲成人av一区二区 | 国产精品成人免费 | 亚洲夜夜爽 | 亚洲精品一区二三区不卡 | 成人九色 |