spaCy 是一个高级的自然语言处理(NLP)库,专为处理大规模文本数据而设计。它提供了快速且高效的工具,用于文本的标记化、词性标注、依存解析、命名实体识别、词向量等任务。spaCy 支持多种语言,并且通过预训练的模型提供了开箱即用的功能。其设计目标是简洁和高效,适合在生产环境中使用。
spaCy 的管道机制允许用户轻松地添加和移除组件,定制化处理流程。它还提供了丰富的API接口,便于与其他数据科学和机器学习工具集成。此外,spaCy 还支持自定义训练,用户可以根据特定需求微调模型。
可视化工具如 displaCy 使得解析结果的展示变得直观。总之,spaCy 是一个强大且灵活的NLP库,适用于研究和工业应用中的各种文本处理任务。
以下是一些 spaCy 常用函数的参数注释、示例和简短说明:
spacy.load(name, **overrides)
name
: 要加载的预训练模型的名称(例如'en_core_web_sm'
)。**overrides
: 可选参数,用于覆盖模型配置的默认值。
示例:
import spacy nlp = spacy.load('en_core_web_sm')
说明:加载一个预训练的语言模型。
nlp(text)
text
: 要处理的文本字符串。
示例:
doc = nlp("This is a sentence.")
说明:处理文本并生成一个文档对象。
doc.text
无参数。
示例:
print(doc.text)
说明:获取文档的原始文本。
doc.ents
无参数。
示例:
for ent in doc.ents: print(ent.text, ent.label_)
说明:获取文档中的命名实体。
doc.sents
无参数。
示例:
for sent in doc.sents: print(sent.text)
说明:获取文档中的句子。
doc.noun_chunks
无参数。
示例:
for chunk in doc.noun_chunks: print(chunk.text)
说明:获取文档中的名词短语。
token.text
无参数。
示例:
for token in doc: print(token.text)
说明:获取令牌的文本。
token.lemma_
无参数。
示例:
for token in doc: print(token.lemma_)
说明:获取令牌的词干。
token.pos_
无参数。
示例:
for token in doc: print(token.pos_)
说明:获取令牌的词性。
token.tag_
无参数。
示例:
for token in doc: print(token.tag_)
说明:获取令牌的详细词性标注。
token.dep_
无参数。
示例:
for token in doc: print(token.dep_)
说明:获取令牌的依存关系。
token.head
无参数。
示例:
for token in doc: print(token.head.text)
说明:获取令牌的头部。
token.ent_type_
无参数。
示例:
for token in doc: print(token.ent_type_)
说明:获取令牌的实体类型。
token.is_alpha
无参数。
示例:
for token in doc: print(token.is_alpha)
说明:判断令牌是否为字母。
token.is_stop
无参数。
示例:
for token in doc: print(token.is_stop)
说明:判断令牌是否为停用词。
token.vector
无参数。
示例:
for token in doc: print(token.vector)
说明:获取令牌的词向量。
spacy.explain(label)
label
: 要解释的标签(字符串)。
示例:
print(spacy.explain('GPE'))
说明:解释标签的含义。
nlp.pipe(texts, as_tuples=False, batch_size=50, disable=[], component_cfg=None)
texts
: 要处理的文本列表。as_tuples
: 如果为True,输入应为(文本,标签)元组。batch_size
: 批处理的大小。disable
: 要禁用的管道组件列表。component_cfg
: 管道组件的配置字典。
示例:
texts = ["First text", "Second text"] docs = nlp.pipe(texts, batch_size=2) for doc in docs: print(doc.text)
说明:批量处理文本。
spacy.matcher.Matcher(vocab, validate=True, validate_attrs=None)
vocab
: 词汇表对象。validate
: 是否验证模式。validate_attrs
: 要验证的属性列表。
示例:
from spacy.matcher import Matcher matcher = Matcher(nlp.vocab)
说明:创建一个规则匹配器。
spacy.matcher.PhraseMatcher(vocab, attr='ORTH', validate=True)
vocab
: 词汇表对象。attr
: 要匹配的属性。validate
: 是否验证模式。
示例:
from spacy.matcher import PhraseMatcher phrase_matcher = PhraseMatcher(nlp.vocab)
说明:创建一个短语匹配器。
spacy.tokens.Span(doc, start, end, label=None, vector=None)
doc
: 所属文档对象。start
: 起始令牌索引。end
: 结束令牌索引。label
: 可选的标签。vector
: 可选的向量。
示例:
from spacy.tokens import Span span = Span(doc, 0, 2, label="GREETING")
说明:创建一个跨度对象。
spacy.tokens.DocBin(store_user_data=False, attrs=None)
store_user_data
: 是否存储用户数据。attrs
: 要存储的属性列表。
示例:
from spacy.tokens import DocBin doc_bin = DocBin()
说明:高效存储和加载文档对象。
nlp.add_pipe(component, name=None, before=None, after=None, first=False, last=False, source=None)
component
: 要添加的管道组件。name
: 组件名称。before
: 在指定组件之前添加。after
: 在指定组件之后添加。first
: 是否作为第一个组件添加。last
: 是否作为最后一个组件添加。source
: 组件的来源。
示例:
nlp.add_pipe('ner', last=True)
说明:向管道中添加组件。
nlp.remove_pipe(name)
name
: 要移除的管道组件的名称。
示例:
nlp.remove_pipe('ner')
说明:从管道中移除组件。
nlp.get_pipe(name)
name
: 要获取的管道组件的名称。
示例:
ner = nlp.get_pipe('ner')
说明:获取管道中的组件。
spacy.training.Example(reference, predicted)
reference
: 参考文档对象。predicted
: 预测文档对象。
示例:
from spacy.training import Example example = Example(reference, predicted)
说明:创建训练示例。
spacy.training.Corpus(path, gold_preproc=False, max_length=0, limit=0, shuffle=False)
path
: 语料库文件路径。gold_preproc
: 是否使用金标准预处理。max_length
: 最大文档长度。limit
: 文档数量限制。shuffle
: 是否打乱文档顺序。
示例:
from spacy.training import Corpus corpus = Corpus('path/to/corpus')
说明:创建训练语料库。
spacy.displacy.render(docs, style='dep', page=False, minify=False, jupyter=False, options={})
docs
: 要渲染的文档或文档列表。style
: 渲染风格('dep' 或 'ent')。page
: 是否生成完整HTML页面。minify
: 是否压缩HTML。jupyter
: 是否在Jupyter Notebook中渲染。options
: 渲染选项字典。
示例:
from spacy import displacy displacy.render(doc, style='dep')
说明:可视化文档对象。
spacy.displacy.serve(docs, style='dep', host='0.0.0.0', port=5000, options={})
docs
: 要渲染的文档或文档列表。style
: 渲染风格('dep' 或 'ent')。host
: 服务器主机地址。port
: 服务器端口。options
: 渲染选项字典。
示例:
from spacy import displacy displacy.serve(doc, style='dep')
说明:启动一个本地服务器来展示可视化结果。
函数名 | 分类 | 功能 | 导入模组 |
---|---|---|---|
spacy.load() | 加载模型 | 加载一个预训练的语言模型 | import spacy |
nlp() | 文本处理 | 处理文本并生成一个文档对象 | import spacy |
doc.text | 文本处理 | 获取文档的原始文本 | import spacy |
doc.ents | 实体识别 | 获取文档中的命名实体 | import spacy |
doc.sents | 句子分割 | 获取文档中的句子 | import spacy |
doc.noun_chunks | 名词短语 | 获取文档中的名词短语 | import spacy |
token.text | 词汇处理 | 获取令牌的文本 | import spacy |
token.lemma_ | 词汇处理 | 获取令牌的词干 | import spacy |
token.pos_ | 词汇处理 | 获取令牌的词性 | import spacy |
token.tag_ | 词汇处理 | 获取令牌的详细词性标注 | import spacy |
token.dep_ | 依存解析 | 获取令牌的依存关系 | import spacy |
token.head | 依存解析 | 获取令牌的头部 | import spacy |
token.ent_type_ | 实体识别 | 获取令牌的实体类型 | import spacy |
token.is_alpha | 词汇处理 | 判断令牌是否为字母 | import spacy |
token.is_stop | 词汇处理 | 判断令牌是否为停用词 | import spacy |
token.vector | 词向量 | 获取令牌的词向量 | import spacy |
spacy.explain() | 解释函数 | 解释标签的含义 | import spacy |
nlp.pipe() | 管道处理 | 批量处理文本 | import spacy |
spacy.matcher.Matcher | 模式匹配 | 创建一个规则匹配器 | from spacy.matcher import Matcher |
spacy.matcher.PhraseMatcher | 模式匹配 | 创建一个短语匹配器 | from spacy.matcher import PhraseMatcher |
spacy.tokens.Span | 文本处理 | 创建一个跨度对象 | from spacy.tokens import Span |
spacy.tokens.DocBin | 序列化 | 高效存储和加载文档对象 | from spacy.tokens import DocBin |
nlp.add_pipe() | 管道处理 | 向管道中添加组件 | import spacy |
nlp.remove_pipe() | 管道处理 | 从管道中移除组件 | import spacy |
nlp.get_pipe() | 管道处理 | 获取管道中的组件 | import spacy |
spacy.training.Example | 训练数据 | 创建训练示例 | from spacy.training import Example |
spacy.training.Corpus | 训练数据 | 创建训练语料库 | from spacy.training import Corpus |
spacy.displacy.render | 可视化 | 可视化文档对象 | from spacy import displacy |
spacy.displacy.serve | 可视化 | 启动一个本地服务器来展示可视化结果 | from spacy import displacy |