Spacy EN Модель проблема - PullRequest
1 голос
/ 04 июня 2019

Нужно знать разницу между моделью spaCy's en и en_core_web_sm.

Я пытаюсь сделать NER с Spacy. (Для названия организации) Пожалуйста, найдите ниже скрипт, который я использую

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_char, ent.end_char, ent.label_)

И выше, не предоставляя мне никакого выхода. Но когда я использую «en» модель

import spacy
nlp = spacy.load("en")
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_char, ent.end_char, ent.label_)

это дает мне желаемый результат: Google 4 10 ORG Apple Siri 92 104 ORG айфоны 119 126 ORG Amazon 132 138 ORG Echo and Dot 182 194 ORG

Что в этом плохого? Пожалуйста, помогите.

можно ли использовать модель en_core_web_sm для получения того же результата, что и модель en. если да, то, пожалуйста, совет, как это сделать. Требуется скрипт Python 3 с пандами df в качестве входных данных. Спасибо

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Таким образом, каждая модель представляет собой модель машинного обучения, обучаемую поверх определенного корпуса (текстовый набор данных). Это позволяет каждой модели помечать записи по-разному, особенно потому, что некоторые модели были обучены на меньшем количестве данных, чем другие.

В настоящее время Spacy предлагает 4 модели для английского языка, представленные в: https://spacy.io/models/en/

Согласно https://github.com/explosion/spacy-models, модель можно загрузить несколькими различными способами:

# download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm

# out-of-the-box: download best-matching default model
python -m spacy download en

Возможно, когда вы загрузили модель 'en', лучшей подходящей моделью по умолчанию не было 'en_core_web_sm'.

Кроме того, имейте в виду, что эти модели обновляются время от времени, что может привести к тому, что у вас будут две разные версии одной и той же модели.

0 голосов
/ 05 июня 2019

В моей системе результат одинаков в обоих случаях enter image description here

Код: -

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_char, ent.end_char, ent.label_)

import spacy
nlp = spacy.load("en")
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_char, ent.end_char, ent.label_)
...