spaCy 是一個號稱工業級的天然語言處理工具包,最核心的數據結構是Doc和Vocab。Doc對象包含Token的序列和Token的註釋(Annotation),Vocab對象是spaCy使用的詞彙表(vocabulary),用於存儲語言中共享的數據,spaCy經過集中存儲字符串,單詞向量和詞彙屬性(lexical attribute)等,避免存儲數據的多個副本。git
spaCy模塊有4個很是重要的類:web
Vocab對象用於存儲詞彙表和語言共享的數據,能夠在不一樣的Doc對象之間共享數據,詞彙表使用Lexeme對象和StringStore對象來表示。api
>>> import spacy >>> nlp=spacy.load("en_core_web_lg") >>> apple=nlp.vocab[u'apple']
apple是一個Lexeme對象,vocab還包含一個strings屬性,用於表示把單詞映射到64位的哈希值,這使得每個單詞在spaCy中只存儲一份。數據結構
1,Lexeme類型架構
Lexeme對象是詞彙表Vocab中的一個詞條(entry),能夠經過該similarity()函數計算兩個詞條的類似性:app
apple = nlp.vocab[u"apple"] orange = nlp.vocab[u"orange"] apple_orange = apple.similarity(orange)
Lexeme對象的屬性,一般屬性是成對存在的,不帶下劃線的是屬性的ID形式,帶下劃線的是屬性的文本形式:函數
2,StringStore類型工具
StringStore類是一個string-to-int的對象,經過64位的哈希值來查找詞彙,或者把詞彙映射到64位的哈希值:url
>>> from spacy.strings import StringStore >>> stringstore = StringStore([u"apple", u"orange"]) >>> apple_hash = stringstore[u"apple"] >>> apple_hash 8566208034543834098
Vocab的strings屬性是一個StringStore對象,用於存儲共享的詞彙數據:spa
apple_id=nlp.vocab.strings[u'apple'] >>> apple_id 8566208034543834098
3,Vocab類
在初始化Vocab類時,傳遞參數strings是list或者StringStore對象,獲得Vocab對象:
from spacy.vocab import Vocab vocab = Vocab(strings=[u"apple", u"orange"]) >>> vocab.strings[u"apple"] 8566208034543834098
Token是一個單詞、標點符號、空格等,在天然語言處理中,把一個單詞,一個標點符號,一個空格等叫作一個token。
>>> import spacy >>> nlp=spacy.load("en_core_web_sm") >>> doc=nlp("I like apples and oranges") >>> token_apple =doc[2] >>> token_orange=doc[4]
1,Token對象的函數
計算不一樣token之間的語義類似性
token_apple.similarity(token_orange)
對一段文本,得到相鄰的token,默認狀況下,獲得的是下一個相鄰的token:
>>> token_apple.nbor() and
從一段文本種,得到相連的token:
token_apple.conjuncts
(oranges,)
2,Token對象的屬性
Token對象,除了具備Lexeme對象屬性以外,還具備Token對象特有的屬性:
對一個文本數據進行分詞以後,Doc對象是token的序列,Span對象是Doc對象的一個切片:
>>> import spacy >>> nlp=spacy.load("en_core_web_sm") >>> doc=nlp("I like apples and oranges")
>>> span=doc[0:3]
1,得到文本的命名實體
doc.ents
2,得到文本的名詞塊
doc.noun_chunks
3,得到文本的句子
doc.sents
4,查看doc的文本
doc.text
Span對象是Doc對象的一個切片,Span對象的屬性:
Doc對象是由Tokenizer構造,而後由管道(pipeline)的組件進行適當的修改。 Language對象協調這些組件,它接受原始文本並經過管道發送,返回帶註釋(Annotation)的文檔。 文本註釋(Text Annotation)被設計爲單一來源:Doc對象擁有數據,Span是Doc對象的視圖。
參考文檔: