วิธีการที่คล้ายกันของ spacey ทำงานไม่ถูกต้อง

ฉันกำลังประมวลผลภาษาธรรมชาติอย่างง่ายโดยใช้ spacy ฉันกำลังกรองคำโดยการวัดความคล้ายคลึงกันระหว่างคำต่างๆ

ฉันเขียนและใช้โค้ดง่ายๆต่อไปนี้ที่แสดงในเอกสารประกอบของ spacy แต่ผลลัพธ์ดูไม่เหมือน เอกสารประกอบ< /ก>.

import spacy
nlp = spacy.load('en_core_web_lg')
tokens = nlp('dog cat banana')

for token1 in tokens:
    for token2 in tokens:
        sim = token1.similarity(token2)
        print("{:>6s}, {:>6s}: {}".format(token1.text, token2.text, sim))

ผลลัพธ์ของโค้ดอยู่ด้านล่าง

   dog,    dog: 1.0
   dog,    cat: 2.307269867164827e-21
   dog, banana: 0.0
   cat,    dog: 2.307269867164827e-21
   cat,    cat: 1.0
   cat, banana: -0.04468117654323578
banana,    dog: -7.828739256116838e+17
banana,    cat: -8.242222286053048e+17
banana, banana: 1.0

โดยเฉพาะความคล้ายคลึงกันระหว่าง "สุนัข" และ "แมว" ควรอยู่ที่ประมาณ 0.8 แต่ก็ไม่ใช่ค่าที่น้อยมาก

นอกจากนี้ ความคล้ายคลึงระหว่าง "สุนัข" และ "กล้วย" คือ 0.0 แต่ความคล้ายคลึงระหว่าง 'กล้วย' และ 'สุนัข' คือ -7.828739256116838e+17

ฉันไม่รู้วิธีแก้ไข

โปรดช่วยฉันด้วย


person frhyme    schedule 18.09.2018    source แหล่งที่มา
comment
ลองหลังจากติดตั้งรุ่น en_core_web_lg อีกครั้ง   -  person Ajay Srivastava    schedule 19.09.2018
comment
ฉันไม่รู้วิธีการติดตั้งใหม่ ฉันพยายามค้นหามันในหน้าเว็บเอกสารของ spacey แต่มันล้มเหลว ถ้าทราบวิธีติดตั้งใหม่ช่วยบอกด้วยนะครับ ขอบคุณสำหรับความคิดเห็นและความช่วยเหลือของคุณ   -  person frhyme    schedule 21.09.2018
comment
python -m spacy ดาวน์โหลด en_core_web_lg --force   -  person Ajay Srivastava    schedule 21.09.2018
comment
@AjaySrivastava ขอบคุณสำหรับความช่วยเหลือของคุณ ฉันลองแล้วตามที่คุณพูดถึง แต่น่าเศร้าที่มันยังไม่แตกต่างกัน แต่ขอบคุณสำหรับความช่วยเหลือของคุณ   -  person frhyme    schedule 22.09.2018


คำตอบ (2)


ขั้นแรกให้ติดตั้งรุ่น EN ขนาดใหญ่ (หรือทุกรุ่น)

python3 -m spacy.en.download all

จากนั้นให้ลองใช้โค้ดตัวอย่างตามเอกสารประกอบโดยใช้

nlp = spacy.load('en_core_web_md')

หากไม่ได้ผล ให้ลองโหลดจากด้านบนแทน

nlp = spacy.load('en')

หลังจากทำการเปลี่ยนแปลงข้างต้นแล้ว ผลลัพธ์จะเป็นไปตามเอกสารประกอบ

python3 /tmp/c.py
   dog,    dog: 1.000000078333395
   dog,    cat: 0.8016855098942641
   dog, banana: 0.2432764518408807
   cat,    dog: 0.8016855098942641
   cat,    cat: 1.0000001375986456
   cat, banana: 0.2815436412709355
banana,    dog: 0.2432764518408807
banana,    cat: 0.2815436412709355
banana, banana: 1.000000107068369
person Anil_M    schedule 19.09.2018
comment
ขอบคุณสำหรับความช่วยเหลือของคุณ. อย่างไรก็ตาม มันไม่สามารถแก้ไขได้โดยใช้วิธีแก้ปัญหาของคุณ มันยังคงแสดงผลลัพธ์ความคล้ายคลึงที่ผิดซึ่งแตกต่างกับผลลัพธ์ของคุณ - person frhyme; 21.09.2018

ในที่สุดฉันก็แก้ไขปัญหานี้ได้แล้ว

เพียงเพิ่มโค้ด import numpy as np .

นั่นคือทั้งหมดที่

person frhyme    schedule 30.08.2019
comment
วิธีแก้ปัญหานั้นไม่สมเหตุสมผลเลย คุณไม่ได้ใช้ numpy ในโค้ดของคุณด้วยซ้ำ - person Ateik; 10.02.2020
comment
อาเต็ก @อาเตอิก ใช่ครับ อย่างที่คุณบอก ฉันไม่ได้ใช้ numpy ในโค้ดของฉัน แต่ฉันแก้ไขปัญหาด้วยการเพิ่มรหัสนั้น ไลบรารี spacy อาจมีการพึ่งพา numpy - person frhyme; 11.02.2020