我正在尝试导入在VSCODE上使用的Spacy,但是我遇到了一个错误:"发生了异常:Importerror无法导入名称Deque." 我在虚拟环境中确实在pip install -u spacy上进行了pip install -u spacy.想知道如何解决错误,以便我可以使用Spacy?如果我尝试其他Python库,则此导入错误会消失.对于ex,"导入nltk"工作正常. 解决方案 建议您在当前选定的Python环境中重新安装模块" Spacy"(在VS代码的左下角显示的Python环境).您可以使用命令" pip show spacy"(或pip3 show spacy)检查模块的安装位置: 调试: 如果它仍然不起作用,请尝试重新安装Python扩展名和重新加载vs代码.
以下是关于 spacy 的编程技术问答
我正在将Spacy从2.0.18版本更新为版本2.1.1. 但是每次我尝试运行命令 pip install spacy-nightly 或 pip install -U spacy==2.1.1 我只是得到 error: [WinError 2] System cannot find file specified msvc py_compiler msvc 具有大量不可读的输出. 现在,我认为这与C ++编译器Spacy用途有关,我像在Microsoft Visual网站上找到的每个软件包一样安装了它,但我的问题无法解决. 我真的很感谢您的帮助! 解决方案 很可能,您使用32位Python可执行文件在64位计算机上. 删除Python的32位版本并安装64位版本的Python. 如果您在Virtualenv中工作的位置,请删除Virtualenv并在安装64位Python后再次重新创建它.
我一直在尝试使用库neuralcoref:基于神经网和spacy的最新核心分辨率.我正在使用Ubuntu 16.04,Python 3.7.3在Conda 1.9.7和Spacy 2.2.4. . 我的代码(来自 https://spacy.io/universe/project/project/neuralcoref ): import spacy import neuralcoref nlp = spacy.load('en_core_web_sm') neuralcoref.add_to_pipe(nlp) doc1 = nlp('My sister has a dog. She loves him.') print(doc1._.coref_clusters) doc2 = nlp('Angela lives in Boston. She is quite happy in that city.') for ent in doc2.ents: pr
我正在使用spacy从依赖性解析中获取好处,我在使Spcay令牌化的标记化时遇到了麻烦. 这是我的代码: nlp = spacy.load("en_core_web_md") nlp.vocab['bone morphogenetic protein (BMP)-2'] nlp.tokenizer = Tokenizer(nlp.vocab) text = 'This study describes the distributions of bone morphogenetic protein (BMP)-2 as well as mRNAs for BMP receptor type IB (BMPRIB).' doc = nlp(text) print([(token.text,token.tag_) for token in doc]) 输出: [('This', 'DT'), ('study', 'NN'), ('describes', 'VBZ'),
我正在尝试标记和解析已经在句子中拆分的文本,并且已经被标记了.例如: sents = [['I', 'like', 'cookies', '.'], ['Do', 'you', '?']] 处理文本批次的最快方法是.pipe().但是,我尚不清楚如何将其与预先进行的预分段文本一起使用.性能是关键.我尝试了以下内容,但这引发了错误 docs = [nlp.tokenizer.tokens_from_list(sentence) for sentence in sents] nlp.tagger(docs) nlp.parser(docs) 跟踪: Traceback (most recent call last): File "C:\Python\Python37\Lib\multiprocessing\pool.py", line 121, in worker result = (True, func(*args, **kwds)) File "
嘿!我正在尝试添加一个使用Spacy 2.02令牌化一些令牌的例外在两个令牌 中 ('us $','sym'),('100','num') ,但我想在这样的三个中分开,而不是为US $之后的每个数字做一个特殊情况,而是要为每个具有US $数字的令牌进行示意. ('us','propn'),('$','sym'),('800','num') 我正在阅读有关Spacy文档的Tokenizer_Exceptions,但我不知道该如何. 我试图使用 来自spacy.lang.en.tokenizer_exceptions导入tokenizer_exceptions 还有一个具有方法update_exc()的spacy.util. 有人可以发布有关如何执行的完整代码示例吗? 哦,另一件事,我知道lang.en上的文件tokenizer_exceptions已经有一些例外,例如split"我"在" i"'''M中,我已经评论了那部分.我不想让令牌拆分
我想使用Spacy的POS标签,NER和依赖性解析,而无需使用单词令牌化.确实,我的输入是代表句子的令牌的列表,我想尊重用户的令牌化. 这根本可以使用Spacy或任何其他NLP软件包? 目前,我正在使用此基于Spacy的函数将句子(Unicode String)以串联格式放置: import spacy nlp = spacy.load('en') def toConll(string_doc, nlp): doc = nlp(string_doc) block = [] for i, word in enumerate(doc): if word.head == word: head_idx = 0 else: head_idx = word.head.i - doc[0].i + 1 head_idx = str(head_
以下代码将句子分解为单个令牌,输出如下 "cloud" "computing" "is" "benefiting" " major" "manufacturing" "companies" import en_core_web_sm nlp = en_core_web_sm.load() doc = nlp("Cloud computing is benefiting major manufacturing companies") for token in doc: print(token.text) 我理想的是,在技术上是一个单词,将"云计算"一起读取"云计算". 基本上我正在寻找Bi gram. Spacy中是否有任何功能可以允许Bi gram或Tri gram? 解决方案 Spacy允许检测名词块.因此,要像单个实体一样解析您的名词短语: 检测名词块 https://spacy.io/usage/linguistic-feat
我正在研究我的第一个Python项目,并且具有相当大的数据集(成千上万的行).我需要在5个文本列(每个"单元"的文本多个句子)上进行一些NLP(聚类,分类),并一直在使用Pandas来组织/构建数据集.我希望将Spacy用于所有NLP,但无法完全弄清楚如何将文本归为我的列中.我已经阅读了一堆Spacy文档,并搜索了谷歌,但是我发现的所有示例都是一个句子或单词 - pandas df中的75k行. 我尝试了类似的事情: df['new_col'] = [token for token in (df['col'])] ,但肯定会感谢一些帮助/资源. full(albeit messy)代码可用 解决方案 我从未使用过Spacy(NLTK一直为我完成工作),但是从瞥了一眼文档,看起来应该有效: import spacy nlp = spacy.load('en') df['new_col'] = df['text'].apply(lambda x: nlp(x
以下是提供的代码作为答案的问题; import spacy from spacy.tokenizer import Tokenizer from spacy.util import compile_prefix_regex, compile_infix_regex, compile_suffix_regex import re nlp = spacy.load('en') infixes = nlp.Defaults.prefixes + (r"[./]", r"[-]~", r"(.'.)") infix_re = spacy.util.compile_infix_regex(infixes) def custom_tokenizer(nlp): return Tokenizer(nlp.vocab, infix_finditer=infix_re.finditer) nlp.tokenizer = custom_tokenizer(nlp) s1 = "Ma
(德语)Spacy Tokenizer不会在斜线,下划线或星号上分开,这只是我需要的(因此," der/die"会导致单个令牌). 它确实在括号上分开,因此" DIES(UND)DAS"分为5个令牌.是否有一种(简单的)方法告诉默认令牌也不会在没有空间的两侧的字母封闭的括号上分开? 在为令牌定义的括号上的这些拆分如何? 解决方案 括号上的分裂是在这一行中定义的,在该行中,它在两个字母之间分裂: https://github.com/Explosion/spacy/blob/23ec07debdd568f09c7c83b10564850f9f9f9f9fa67ad4/spacy/lang/lang/de/punctuation.pypunctuation.py#l18 没有简单的方法可以删除infix模式,但是您可以定义一个可以执行您想要的自定义令牌.一种方法是从spacy/lang/de/punctuation.py中复制infix定义并修改它: i
在包含主题标签的句子中,例如推文,Spacy的Tokenizer将主题标签分为两个令牌: import spacy nlp = spacy.load('en') doc = nlp(u'This is a #sentence.') [t for t in doc] 输出: [This, is, a, #, sentence, .] 我想拥有如下的标签标签,这是可能的吗? [This, is, a, #sentence, .] 解决方案 您可以执行一些前和填充字符串操作,这将使您绕过基于"#"的令牌化,并且易于实现.例如 > >>> import re > >>> import spacy > >>> nlp = spacy.load('en') > >>> sentence = u'This is my twitter update #MyTopic' > >>> parsed = nlp(sentence) > >>> [token.text fo
我是Spacy和NLP的新手.我在使用Spacy进行句子细分时面对以下问题. 我试图将文字引入句子中包含编号列表(在编号和实际文本之间的空间),如下所示. import spacy nlp = spacy.load('en_core_web_sm') text = "This is first sentence.\nNext is numbered list.\n1. Hello World!\n2. Hello World2!\n3. Hello World!" text_sentences = nlp(text) for sentence in text_sentences.sents: print(sentence.text) 输出(1.,2.,3.被视为单独的行)是: This is first sentence. Next is numbered list. 1. Hello World! 2. Hello World2!
我想将连字符单词包括在内:长期,自尊,等.在stackoverflow上查看了一些类似的帖子后, github ,其文档和其他地方,我还写了一个自定义令牌,如下: import re from spacy.tokenizer import Tokenizer prefix_re = re.compile(r'''^[\[\("']''') suffix_re = re.compile(r'''[\]\)"']$''') infix_re = re.compile(r'''[.\,\?\:\;\...\‘\’\`\“\”\"\'~]''') def custom_tokenizer(nlp): return Tokenizer(nlp.vocab, prefix_search=prefix_re.search, suffix_search=suffix_re.search,
我一直在尝试使用spaCy预估计的BERT模型de_trf_bertbasecased_lg来提高分类项目的准确性.我曾经使用de_core_news_sm从头开始构建一个模型,一切都很好:我的准确性约为70%.但是现在,我改用BERT验证的模型,并且获得了0%的准确性.我不认为它的工作原理很糟糕,所以我假设我的代码只是一个问题.我可能错过了一些重要的东西,但我不知道什么.我在本文中使用了代码. . 这是我的代码: import spacy from spacy.util import minibatch from random import shuffle spacy.require_gpu() nlp = spacy.load('de_trf_bertbasecased_lg') data = get_data() # get_data() function returns a list with train data (I'll explain later how
在Spacy的文本分类中正面和负.因此,猫得分表示为 cats = [{"POSITIVE": bool(y), "NEGATIVE": not bool(y)} for y in labels] 我正在使用多标签分类,这意味着我有两个以上的标签可以在一个文本中标记.我添加了标签为 textcat.add_label("CONSTRUCTION") ,为了指定猫的得分,我已经使用过 cats = [{"POSITIVE": bool(y), "NEGATIVE": not bool(y)} for y in labels] 我很确定这是不正确的.有什么建议如何指定多标签分类中猫的分数以及如何训练多标映的分类? Spacy的示例是否也适用于多标签分类? 解决方案 如果我正确理解您,您有一个类别列表,并且您的数据可以一次有多个类别.在这种情况下,您不能使用"POSITIVE": bool(y), "NEGATIVE": not bool(y)标记您
我试图从文档中删除单词,这些单词被Spacy被认为是命名的实体,因此基本上从字符串示例中删除了"瑞典"和"诺基亚".我找不到解决实体作为跨度存储的问题的方法.因此,当将它们与Spacy Doc中的单个令牌进行比较时,会引起错误. 在稍后的步骤中,该过程应该是应用于存储在熊猫数据框中的几个文本文档的函数. 我很感谢您有关如何更好地发布问题的任何形式的帮助和建议,因为这是我的第一个. nlp = spacy.load('en') text_data = u'This is a text document that speaks about entities like Sweden and Nokia' document = nlp(text_data) text_no_namedentities = [] for word in document: if word not in document.ents: text_no_namedent
我打算使用Spacy和Textacy来识别英语中的句子结构. 例如: 猫坐在垫子上-SVO上,猫跳了起来,拿起饼干-SVV0. 猫吃了饼干和饼干. - svoo. 该程序应该读取一个段落,并将每个句子的输出返回为SVO,SVOO,SVVO或其他自定义结构. 到目前为止的努力: # -*- coding: utf-8 -*- #!/usr/bin/env python from __future__ import unicode_literals # Load Library files import en_core_web_sm import spacy import textacy nlp = en_core_web_sm.load() SUBJ = ["nsubj","nsubjpass"] VERB = ["ROOT"] OBJ = ["dobj", "pobj", "dobj"] text = nlp(u'The cat sat on the mat
我已经安装了spacy并使用以下方式下载了en_core_web_sm PIP安装启动 python -m spacy下载en_core_web_sm 也尝试了 PIP3安装我的Spacy版本:2.2.0 我的Python版本:3.7.4 但是,它仍然显示出错误: oserror:[e050]找不到模型'en_core_web_md'.它似乎不是一个快捷链接,python软件包或数据目录的有效路径. *import aqgFunction import spacy import en_core_web_sm nlp = en_core_web_sm.load() # Main Function def main(): # Create AQG object aqg = aqgFunction.AutomaticQuestionGenerator() inputTextPath = "E:\Automatic-Question-Generator-mas
我已经构建了一些依靠en_core_web_md模型的测试.该模型需要约15秒的时间才能加载到我的计算机上的内存中,这使得测试很痛苦. 是否有一种明智的方法可以加快速度? 解决方案 v2.2.[0-5] md模型的次要错误使其负载特别慢(请参阅 https://github.com/explosion/spacy/pull/4990 ). 您可以在模型包中重新格式化一个文件,以改善加载时间. 在模型软件包的vocab目录中(例如,lib/python3.7/site-packages/en_core_web_md/en_core_web_md-2.2.5/vocab): import srsly orig_data = srsly.read_msgpack("key2row") new_data = {} for key, value in orig_data.items(): new_data[int(key)] = int(value) srsly.