我从想要建立语义词汇的文本中输入内容,但是如果没有词汇,我只是传递单词的令牌列表。但是我不知道在不设置词汇的情况下矢量化和聚类是基于什么基础进行的?在文档中提到“如果未给出,则根据输入文档确定词汇表。”但是,我只需要输入一个txt文件即可。
我尝试用wordnet同义词集创建词汇表,但是无法到达任何地方。
import string
import re
import nltk
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.cluster import KMeans
from nltk.corpus import wordnet
src = open('Sample.txt', 'r')
pageData = src.read().splitlines()
# preprocessing
def clean_text(text):
text = "".join([word.lower() for word in text if word not in string.punctuation])
tokenize = re.split("\W+", text) # tokenizing based on words
return text
filter_data = clean_text(pageData)
# Feature Extraction
Tfidf_vectorizer = TfidfVectorizer(tokenizer=clean_text, analyzer='char',
use_idf=True, stop_words=stopwords)
Tfidf_matrix = Tfidf_vectorizer.fit_transform(filter_data) # checking the
words in filter data to find relevance
terms = Tfidf_vectorizer.get_feature_names()
# Clustering
km = KMeans(n_clusters=5, n_jobs=-1)
labels = km.fit_transform(Tfidf_matrix)
clusters = km.labels_.tolist()
X = Tfidf_matrix.todense()
答案 0 :(得分:0)
这里的词汇是单词到词库的映射。
如果您不预定义词汇表(在处理多个多个源以获取相同列时是必需的),则只需在看到新单词时添加新列即可构建该词汇表。