Spacy 词法生成器问题/一致性
我目前正在使用SPACY用于NLP目的(主要是lemmatization和diskenization).所使用的模型是En-Core-Web-SM(2.1.0). 运行以下代码以检索来自查询的单词"清洁"列表 import spacy nlp = spacy.load("en_core_web_sm") doc = nlp(query) list_words = [] for token in doc: if token.text != ' ': list_words.append(token.lemma_) 但是,在运行此代码时,我会面临一个主要问题. 例如,当查询是"茶叶的加工"时. 存储在list_words中的结果可以是['processing','tea','leaf']或[``processing'','tea','well']. 似乎结果不一致.我无法更改输入/查询(不可能为上下文添加另一个单词),我确实需要每次找到相同的结果.
28 2024-04-23
编程技术问答社区
在使用 Spacy 作为管道时,如何提高 Rasa NLU 的准确性?
在spacy文档中,提到它使用向量相似性. 例如,如果我们测试不在培训数据中但具有相同含义的句子,则应以相同的目的对训练句子进行分类. 但没有发生. 假设培训数据是这样的 - ## intent: delete_event - delete event - delete all events - delete all events of friday - delete ... 现在,如果我测试remove event,那么它不会被归类为delete_event而不是其他意图. 我尝试将管道更改为supervised_embeddings,并且还改变了Spacy管道的组件.但是这个问题仍然存在. 我不想为remove...文本创建培训数据,因为Spacy应该根据文档来支持. 我没有其他句子delete...的意图. rasa中的配置文件 - language: "en_core_web_sm" pipeline: - name: "Sp
18 2024-04-23
编程技术问答社区
在 python 中提取姓名的姓氏
我有一个带有行的文本文件: Acosta, Christina, M.D. is a heart doctor Alissa Russo, M.D. is a heart doctor 是否有一种方法可以转换下方: Acosta, Christina, M.D. is a heart doctor to Christina Acosta, M.D. is a heart doctor 预期输出: Christina Acosta, M.D. is a heart doctor Alissa Russo, M.D. is a heart doctor 解决方案 您可以使用后面的正则姓名来对第一个和姓氏进行分组,并以相反的顺序替换它们,而无需逗号: import re data = '''Acosta, Christina, M.D. is a heart doctor Alissa Russo, M.D. is a heart doctor
30 2024-04-23
编程技术问答社区
spacy 英语模型安装失败
Windows 10,Python 26-32位. VC ++ 32位. 控制台作为管理员 无法按照指示安装英语模型在这里 也尝试了德语.尝试手动下载并链接它. Spacy Link命令有问题. 有人知道这个问题吗? Traceback (most recent call last): File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main "__main__", fname, loader, pkg_name) File "c:\python27\lib\runpy.py", line 72, in _run_code exec code in run_globals File "c:\python27\lib\site-packages\spacy\__main__.py", line 71, in plac.Interpreter.call(
26 2024-04-23
编程技术问答社区
将 spacy 德语模型加载到 jupyter 笔记本中
这是笔记本中的单元格: #%% !python -m spacy download de_core_news_sm spacy_en = spacy.load('en_core_web_sm') spacy_de = spacy.load('de_core_news_sm') 我得到此错误: OSError: [E050] Can't find model 'de_core_news_sm'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory. 我很困惑,因为我认为我正确地遵循了Spacy说明. 解决方案 执行后 !python -m spacy download de_core_news_sm spacy_de = spacy.load('de_core_news_sm') spacy_en = spacy.load(
14 2024-04-23
编程技术问答社区
将多个字符串处理成一条流水线
请参阅以下代码,这是正确运行管道所需的代码. !pip install transformers import re from typing import List import spacy from spacy import Language, util from spacy.tokens import Doc, Span from transformers import pipeline def extract_triplets(text: str) -> List[str]: """ parses the text to triplets 1. Split the text into tokens 2. If the token is , , or , then set the current variable to the appropriate value 3. If the token
14 2024-04-23
编程技术问答社区
使用 C++ 和 Murmurhash 的 Python pip SpaCy 安装错误
编辑:请参阅正确答案的评论. 大家好,这是我遇到的一个问题,即安装NLP程序Spacy. 我尝试了pip install -U spacy和pip install spacy,但是我似乎遇到了同样的错误.我在三台单独的计算机上尝试了这一点.我正在尝试通过Visual Studio 2017预览安装. 似乎每件事都很好,直到我收到以下错误: 错误:需要Microsoft Visual C ++ 14.0.使用" Microsoft Visual C ++构建工具"获取: http://landinghub.visalstudio.com/Visual-CPP构建工具 Command "C:\Users\kevin\Anaconda3\python.exe -u -c "import setuptools, tokenize;file='C:\Users\kevin\AppData\Local\Temp\pip-build -jy_zc2z4 \ murmurhash
40 2024-04-23
编程技术问答社区
SpaCy: 如何为竖条"|"手动设置 POS 标签?
当文本被Spacy标记时,垂直条" |"根据上下文,分配了不同的POS标签,例如" adv"," del" ...而我想要" |"被认为是" punc".有没有办法将此pos强加给" |" ? 我尝试了此命令,但它不起作用. nlp.tokenizer.add_special_case('|', [{ORTH: '|', POS: PUNC}]) 解决方案 我会在tagger之后将简单的管道添加到管道中: def pos_postprocessor_pipe(doc) : for token in doc : if token.text == '|': token.pos_ = 'PUNCT' return doc nlp = spacy.load("en_core_web_sm") nlp.add_pipe(pos_postprocessor_pipe, name="pos_postprocessor
14 2024-04-23
编程技术问答社区
如何修复 python spaCy 错误: "未定义的符号: PySlice_AdjustIndices"?
使用 Traceback (most recent call last): File "/home/vv/PythProj/esi-code/webapp/sp_token.py", line 2, in from spacy.en import English File "/home/vv/anaconda3/lib/python3.6/site-packages/spacy/__init__.py", line 4, in from . import util File "/home/vv/anaconda3/lib/python3.6/site-packages/spacy/util.py", line 5, in import regex as re File "/home/vv/anaconda3/lib/python3.6/site-packages/regex.py", line
12 2024-04-23
编程技术问答社区
Spacy NER 定制训练和预训练模型的置信度得分
我在Spacy的文档中看到,NER实体的信心得分已在最近的版本中推出.我正在使用spacy == 3.1.2.我尝试了以下代码来找到置信度得分,但我遇到了错误.还可以找到自定义模型和验证模型的置信度评分. 代码 nlp = spacy.load("output/model-best") test_data = 'Sample data here' doc = nlp(test_data) spans = doc.spans["spancat"] # SpanGroup print(spans.attrs["scores"]) # list of numbers, span length as SpanGroup 错误 KeyError: 'spancat' 解决方案 仅当您使用验证的管道使用实体识别器/NER组件,该组件不支持置信分数.
20 2024-04-23
编程技术问答社区
找不到模型 'en_core_web_lg'。它似乎不是快捷链接、Python 软件包或数据目录的有效路径
我试图在Google Collaph上在Spacy中上传'en_core_web_lg'. 我在协作单元上执行了以下命令. !python -m spacy download en_core_web_lg 现在我运行nlp=spacy.load('en_core_web_lg') 我再次收到此错误消息.请建议. 解决方案 !python -m spacy download en_core_web_lg 然后: [Ctrl+M] or `Restart runtime` from menu bar 工作!
22 2024-04-23
编程技术问答社区
spaCy 3 光束解析 NER 概率
我正在尝试检索将正确标签分配给实体的Spacy模型的概率.我有Spacy版本3.0.5. threshold = 0.5 for i in testing_raw: doc = nlp_updated(i) beams = nlp_updated.beam_parse([ doc ], beam_width = 16, beam_density = 0.0001) entity_scores = defaultdict(float) for beam in beams: for score, ents in nlp_updated.entity.moves.get_beam_parses(beam): for start, end, label in ents: entity_scores[(start, end, label)] += score
20 2024-04-23
编程技术问答社区
Spacy 2.0 支持哪些日期和时间格式?
我在应用程序中使用以下模型: en_core_web_sm xx_ent_wiki_sm 我想知道默认Spacy模型可以提取的支持的日期和时间格式. 使用的Python版本:3.6 使用的Spacy版本:2.0.x 解决方案 英语模型接受了Ontonotes 5语料库的培训,该型号支持更广泛标签方案包括DATE和TIME. xx_ent_wiki_sm模型在Wikipedia语料库上接受了更有限标签方案,仅识别PER,LOC,ORG和MISC MISC of the Box(在此处详细信息). 使用模型提取日期和时间时,请务必记住这是一个统计过程 - 因此,您看到的结果将取决于上下文和训练模型的数据.根据您正在使用的文本,您可能想更新和微调预先训练的模型具有更多特定于应用程序的示例,或者尝试基于规则的方法.另请参见此线程以获取有关日期和分析的更多详细信息./p>
14 2024-04-23
编程技术问答社区
Spacy EN 型号问题
需要知道Spacy的EN和EN_CORE_WEB_SM模型之间的区别. 我试图用Spacy做NER.(用于组织名称) 请找到我正在使用的脚本 import spacy nlp = spacy.load("en_core_web_sm") text = "But Google is starting from behind. The company made a late push \ into hardware, and Apple’s Siri, available on iPhones, and Amazon’s \ Alexa software, which runs on its Echo and Dot devices, have clear leads in consumer adoption." doc = nlp(text) for ent in doc.ents: print(ent.text, ent.start_cha
16 2024-04-23
编程技术问答社区
Spacy.io 维基百科实体链接器--结果 NLP 模型没有 KB 实体
我一直在学习如何使用我从较小的培训规模为2000篇文章(持续了20个小时),但结果模型即使从培训中使用的文本中也无法识别或返回任何KB实体. nlp_kb.from_disk("/path/to/nel-wikipedia/output_lt_kb80k_model_vsm/nlp") text = "Anarchism is a political philosophy and movement that rejects all involuntary, coercive forms of hierarchy. It calls for the abolition of the state which it holds to be undesirable, unnecessary and harmful. It is usually described alongside libertarian Marxism as the libertarian wing (liberta
14 2024-04-23
编程技术问答社区
将向量从 fastText 导出到 spaCy
我下载了 spacy示例vectors_fast_fast_text .我在终端中执行以下命令: python config/vectors_fast_text.py vectors_loc data/vectors/wiki.pt.vec 与处理器以100%为100%后,我收到了以下文本: 类Colspan 0.32231358 从这里发生什么?我如何在其他地方导出这些向量,例如使用AWS S3培训模板? 解决方案 我修改了示例脚本,加载我的语言的现有数据,读取文件word2vec,最后将所有内容写入文件夹中(此文件夹需要存在). 请关注vectors_fast_text.py: [语言] =示例:" pt" [file_word2vec] =" ./data/word2vec.txt" from __future__ import unicode_literals import plac import numpy import
22 2024-04-23
编程技术问答社区
如何在 spacy 中标记新词汇?
我正在使用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'),
36 2024-04-23
编程技术问答社区
将 SpaCy'EntityRecognizer 应用于 Pandas 数据框中的一列
我有一个基于文本的数据集,我希望将Spacy的EntityRognizer应用于特定列的每一行. 我可以通过这样的操作来应用一般的Spacy管道: df ['new_col'] = df ['col'].应用(lambda x:nlp(x)) 我如何仅应用实体重新调用并获得其值? 解决方案 在spacy中,doc具有属性.ents巫婆在其命名实体上返回发电机. 因此您可以使用: df['new_col'] = df['col'].apply(lambda x: list(nlp(x).ents))
34 2024-04-23
编程技术问答社区
改变 spacy NER 中的波束宽度
我想更改nlp.entity.cfg beam_width(默认情况下它是1). 我尝试了nlp.entity.cfg.update({beam_width:3}),但看起来NLP的东西在此更改后破裂了. (如果我做一个NLP(str),它会给我一个dict而不是spacy.tokens.tokens.doc.doc,如果我放置beam_width:1) 我想更改它,因为在我的情况下,NER的可能性将更加准确(我训练了我自己的模型). 我用github中的代码进行了概率. with nlp.disable_pipes('ner'): doc = nlp(txt) (beams, somethingelse) = nlp.entity.beam_parse([ doc ], beam_width, beam_density) entity_scores = defaultdict(float) for beam in beams: for score, e
144 2024-04-23
编程技术问答社区
在 SpaCy v1.1.2 中加载先前保存的 NER 模型
因此,每当我尝试为Spacy ner加载以前保存的模型时,我都会得到一个核心转储. if os.path.isfile( model_path ): ner.model.load( model_path ) for itn in range( 5 ): random.shuffle( TRAIN_DATA ) for raw_text, entity_offsets in TRAIN_DATA: doc = nlp.make_doc( raw_text ) gold = GoldParse( doc, entities=entity_offsets ) ner.update( doc, gold ) #
20 2024-04-23
编程技术问答社区