nltk 的词汇分散图无法正常工作

问题描述 投票:0回答:1

我一直在使用 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 也不起作用。请帮忙。

python nlp nltk nltk-trainer nltk-book
1个回答
0
投票

对于问题 1,分散图是否显示无意义单词的连续条?如果是这样,我也有同样的问题。通过 anaconda 安装 nltk 和其他各种 python 包后,该问题已得到修复。我事先将它们单独安装,肯定缺少某些东西,导致未知单词在语料库中不断出现。 y 轴上的单词标签的顺序也颠倒了,因此不再与图中可视化的相关数据匹配。 @Kenneth Gomes,这可能可以解释你的不一致之处。一旦我通过 anaconda 重新安装了所有内容,绘图就正确生成了。

© www.soinside.com 2019 - 2024. All rights reserved.