Лексический график дисперсии с nltk работает неправильно

я использовал код nltk, чтобы построить график лексической дисперсии. Как вы можете видеть в приведенном ниже коде (прошу прощения за беспорядочный импорт). Я взял текст для 4 локальных PDF-файлов, извлек текст и выполнил бит word_tokenize. Я также сделал другой вариант, используя nltk.Text.

      import PyPDF2 as pypdf
import matplotlib
import matplotlib.pyplot as plt
import csv
import nltk
nltk.download('averaged_perceptron_tagger')
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')
from PyPDF2 import PdfReader
nltk.download('universal_tagset')
import textract
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import pandas as pd
import numpy as np
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.corpus import wordnet as wn
from nltk import pos_tag
import collections
from collections import defaultdict
from nltk.probability import FreqDist
from nltk.draw.dispersion import dispersion_plot
from nltk.text import Text


df = pd.read_excel(r"C:\Users\Kenneth\Desktop\linksspeech.xlsx", header=None)

textz = ""

for i in df[0]:
 file = open(i,"rb")
 read = pypdf.PdfReader(file)
 pages = len(read.pages)
 count = 0
 while count < pages:
    pagen = read.pages[count]
    count = count + 1
    textz += pagen.extract_text()

taxtf = nltk.Text(textz)

tokes = nltk.word_tokenize(textz, language = "english")

mains = ["education", "poor", "health", "poverty", "zxyzxc"]

nltk.draw.dispersion.dispersion_plot(tokes,words = mains,ignore_case=False, title="hey")

plt.show()

taxtf.dispersion_plot(words = mains)

plot.show()

Вопрос 1. В word_tokenize TOKES — это список строк. Он работает отлично, и появляется дисперсионный график, который выглядит нормально. Но просто чтобы проверить, я скормил ему вымышленное слово «zxyzxc», и когда я создаю график лексической дисперсии, он также показывает мне дисперсию для этого слова, чего не может быть, потому что такого слова нигде в тексте нет. . Тогда лексический сюжет работает неправильно или я делаю что-то не так? Пожалуйста, помогите в этом

Вопрос 2: Я сделал лексическое разброс с помощью Taxtf, который имеет тип nltk.text.Text. Для этого слово «смещение» (ось X на дисперсионном графике) совершенно неверно. значения, которые он показывает, составляют -0,4, -0,2, 0 и 2. Я понимаю, что в этом случае нам нужно передать ему список строк. но word_tokenize не работает в этом случае, и не работает Taxtf.tokens. Пожалуйста, помогите в этом.

1 ответ

Для вопроса 1 показывает ли дисперсионный график непрерывную полосу для бессмысленного слова? Если да, то у меня была такая же проблема. Это было исправлено после установки nltk и других пакетов Python через anaconda. Я заранее установил их по отдельности, и, должно быть, чего-то не хватало, в результате чего неизвестные слова постоянно появлялись в корпусе. Метки слов на оси Y также были перевернуты в обратном порядке, поэтому больше не совпадают с соответствующими данными, визуализируемыми на графике; это может объяснить вашу непоследовательность. Как только я переустановил все через анаконду, сюжет сгенерировался правильно.

Другие вопросы по тегам