本文整理汇总了Python中gensim.corpora.Dictionary方法的典型用法代码示例。如果您正苦于以下问题:Python corpora.Dictionary方法的具体用法?Python corpora.Dictionary怎么用?Python corpora.Dictionary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gensim.corpora
的用法示例。
在下文中一共展示了corpora.Dictionary方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: load_dictionary
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def load_dictionary(filename: str) -> corpora.Dictionary:
"""辞書をロードする。
Args:
filename (str): ファイル名。
Returns:
corpora.Dictionary: 辞書。
"""
dic = corpora.Dictionary.load(filename)
# if with_symbol and \
# not (dic.token2id["<S>"] == 0 and dic.token2id["</S>"] == 1):
# raise Exception("<S> and </S> ids should be 0 and 1")
print("load dictionary: {} items".format(len(dic.values())))
# print([item for item in dic.items()][:10])
return dic
示例2: __init__
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def __init__(self, sentences_file, stopwords):
self.dictionary = None
self.corpus = None
f_sentences = codecs.open(sentences_file, encoding='utf-8')
documents = list()
count = 0
print("Gathering sentences and removing stopwords")
for line in f_sentences:
line = re.sub('<[A-Z]+>[^<]+</[A-Z]+>', '', line)
# remove stop words and tokenize
document = [word for word in nltk.word_tokenize(line.lower()) if word not in stopwords]
documents.append(document)
count += 1
if count % 10000 == 0:
sys.stdout.write(".")
f_sentences.close()
self.dictionary = corpora.Dictionary(documents)
self.corpus = [self.dictionary.doc2bow(text) for text in documents]
self.tf_idf_model = TfidfModel(self.corpus)
print(len(documents), "documents red")
print(len(self.dictionary), " unique tokens")
示例3: sum_bigram
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def sum_bigram(sent, model):
sent = sent.split()
first = True
tot = 0
for i in range(len(sent)):
try:
if first:
tot += model[None][sent[i]]
first = False
else:
tot += model[sent[i-1]][sent[i]]
except:
continue
return tot
#Training Trigram Model[Returns Dictionary of Dictionaries]:
示例4: LDA_train
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def LDA_train(doc):
red = []
en_stop = get_stop_words('en')
for d in doc:
try:
raw = d.lower()
tokens = tokenizer.tokenize(raw)
stopped_tokens = [i for i in tokens if not i in en_stop]
red.append(stopped_tokens)
except:
continue
print("Forming Dictionary.....")
dictionary = corpora.Dictionary(red)
print("Forming Corpus.....")
corpus = [dictionary.doc2bow(text) for text in red]
print("Training Model.....")
lda = models.ldamodel.LdaModel(corpus, num_topics=10, id2word = dictionary, passes=1)
return lda
#Returns Average Of Probablity Of Word Present In LDA Model For Input Document(Returns Float):
示例5: build_lsi_model
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def build_lsi_model(corpus_name, corpus_path, topics=300):
logging.info( 'building lsi model for %s corpus', corpus_name )
dictFile = corpus_path + corpus_name + '.dict'
corpus_tfidf_file = corpus_path + corpus_name + '.tfidf.mm'
logging.info( 'loading dictionary ...' )
dictionary = corpora.Dictionary.load(dictFile)
logging.info( 'loading tfidf corpus ...' )
corpus_tfidf = corpora.MmCorpus(corpus_tfidf_file)
logging.info( 'building lsi model' )
lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=topics)
logging.info( 'saving lsi' )
lsiFile = corpus_path + corpus_name + '.lsi'
lsi.save(lsiFile)
logging.info( 'lsi model is ready' )
##################################################################################
示例6: _build_corpus
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def _build_corpus(sentences):
"""Construct corpus from provided sentences.
Parameters
----------
sentences : list of :class:`~gensim.summarization.syntactic_unit.SyntacticUnit`
Given sentences.
Returns
-------
list of list of (int, int)
Corpus built from sentences.
"""
split_tokens = [jieba_cut(sentence) for sentence in sentences]
dictionary = Dictionary(split_tokens)
return [dictionary.doc2bow(token) for token in split_tokens]
示例7: tokens2ids
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def tokens2ids(
tokens: List[str],
dictionary: corpora.Dictionary,
verbose: bool=False
) -> List[int]:
if verbose:
not_found_lst = [
word for word in tokens if word not in dictionary.token2id
]
if not_found_lst:
print("not found in dict: {}".format(
not_found_lst
))
for word in tokens:
if word in dictionary and dictionary.token2id[word] < 0:
raise("word id < 0: {}".format(word))
# 未知語は UNK にする
return [
dictionary.token2id[word] if word in dictionary.token2id
else dictionary.token2id[config.UNK_SYMBOL]
for word in tokens
]
示例8: latent_dirichlet_allocation
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def latent_dirichlet_allocation(corpus_fname, output_fname, tokenizer_name="mecab"):
make_save_path(output_fname)
documents, tokenized_corpus = [], []
tokenizer = get_tokenizer(tokenizer_name)
with open(corpus_fname, 'r', encoding='utf-8') as f:
for document in f:
tokens = list(set(tokenizer.morphs(document.strip())))
documents.append(document)
tokenized_corpus.append(tokens)
dictionary = corpora.Dictionary(tokenized_corpus)
corpus = [dictionary.doc2bow(text) for text in tokenized_corpus]
LDA = ldamulticore.LdaMulticore(corpus, id2word=dictionary,
num_topics=30,
minimum_probability=0.0,
workers=4)
# 특정 토픽의 확률이 0.5보다 클 경우에만 데이터를 리턴한다
# 확률의 합은 1이기 때문에 해당 토픽이 해당 문서에서 확률값이 가장 큰 토픽이 된다
all_topics = LDA.get_document_topics(corpus, minimum_probability=0.5, per_word_topics=False)
with open(output_fname + ".results", 'w') as f:
for doc_idx, topic in enumerate(all_topics):
if len(topic) == 1:
topic_id, prob = topic[0]
f.writelines(documents[doc_idx].strip() + "\u241E" + ' '.join(tokenized_corpus[doc_idx]) + "\u241E" + str(topic_id) + "\u241E" + str(prob) + "\n")
LDA.save(output_fname + ".model")
示例9: main
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def main():
corpora_documents = []
for item_text in raw_documents:
item_str = list(jieba.cut(item_text))
corpora_documents.append(item_str)
dictionary = corpora.Dictionary(corpora_documents)
corpus = [dictionary.doc2bow(text) for text in corpora_documents]
similarity =similarities.Similarity('-Similarity-index', corpus, num_features=400)
test_data_1 = '你好,我想问一下我想离婚他不想离,孩子他说不要,是六个月就自动生效离婚'
test_cut_raw_1 = jieba.cut(test_data_1)
test_corpus_1 = dictionary.doc2bow(test_cut_raw_1)
similarity.num_best = 5
# 返回最相似的样本材料,(index_of_document, similarity) tuples
print(similarity[test_corpus_1])
示例10: train
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def train(self, prefix: str, corporas: list):
""" 训练模型
保存字典,语料,模型到磁盘
Arguments:
prefix {str} -- 模型名称前缀
corpora_documents {list} -- 分词后的文本
"""
# 生成字典和向量语料
dictionary = corpora.Dictionary(corporas)
dictionary.save('./models/{}_dict.dic'.format(prefix)) # 保存生成的词典
corpus = [dictionary.doc2bow(text) for text in corporas]
corpora.MmCorpus.serialize('./models/{}_corpuse.mm'.format(prefix), corpus) # 保存生成的语料
tfidf_model = models.TfidfModel(corpus)
tfidf_model.save("./models/{}_tfidf_model.model".format(prefix)) # 保存Tfidf模型
示例11: genDictionary
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def genDictionary(self,documents,**kwarg):
'''Generate dictionary and bow-vector of all tokenzied news(articles).
# Arguments:
documents: List of news(articles).
saveDict: Save dictionary or not(bool type).
saveBowvec: Save bow-vector or not(bool type).
returnValue: Return value or not(bool type).
'''
self._raw_documents = documents
token = self.jieba_tokenize(documents) #jieba tokenize
#corpora_documents = self.RemoveWordAppearOnce(token) # remove thw words appearing once in the dictionary
self._dictionary = corpora.Dictionary(token) # generate dictionary using tokenized documents
if kwarg['saveDict']:
self._dictionary.save(kwarg['saveDictPath']) # store the dictionary, for future reference
self._BowVecOfEachDoc = [self._dictionary.doc2bow(text) for text in token] # convert tokenized documents to vectors
if kwarg['saveBowvec']:
corpora.MmCorpus.serialize(kwarg['saveBowvecPath'], self._BowVecOfEachDoc) # store to disk, for later use
if kwarg['returnValue']:
return token, self._dictionary, self._BowVecOfEachDoc
示例12: init_tfidf_chinese_or_pinyin
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def init_tfidf_chinese_or_pinyin(sources_path):
"""
构建td_idf
:param path:
:return:
"""
questions = txtRead(sources_path)
corpora_documents = []
for item_text in questions:
item_seg = list(jieba.cut(str(item_text).strip()))
corpora_documents.append(item_seg)
dictionary = corpora.Dictionary(corpora_documents)
corpus = [dictionary.doc2bow(text) for text in corpora_documents]
tfidf_model = models.TfidfModel(corpus)
print("init_tfidf_chinese_or_pinyin ok! " + sources_path)
file = open(sources_path.replace(".csv", "_dictionary_model.pkl"), 'wb')
pickle.dump([dictionary, tfidf_model], file)
示例13: get_dictionary
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def get_dictionary(df):
logger.debug("一共%d行文本数据", len(df))
all_rows = []
for one in df['html_cut']:
#不知为何从csv加载的有的html切词是nan,然后识别成float类型了,加上这个做错误处理
if not isinstance(one, str):
logger.error("当前行的html_cut数据类型不是Str:%r", one)
continue
cut_content_list = one.split(" ")
all_rows.append(cut_content_list)
# 得到词典
dictionary = corpora.Dictionary(all_rows)
#为了防止未来词表乱掉,先保存一个词表,固定下来。后续的分类验证的时候,会用这个固定词表
# dictionary.save("out/dictionary.dic")
logger.debug("词袋一共%d个词", len(dictionary.keys()))
return dictionary
示例14: build_dictionary
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def build_dictionary(self):
print('%s: build dictionary' % time.strftime("%Y/%m/%d-%H:%M:%S"))
if self.use_cache and os.path.exists(Constants.DICTIONARY_FILE):
print('Dictionary already exists')
self.dictionary = corpora.Dictionary.load(Constants.DICTIONARY_FILE)
return
all_words = []
for record in self.records:
all_words.append(record[Constants.BOW_FIELD])
self.dictionary = corpora.Dictionary(all_words)
self.dictionary.filter_extremes(
Constants.MIN_DICTIONARY_WORD_COUNT,
Constants.MAX_DICTIONARY_WORD_COUNT)
self.dictionary.save(Constants.DICTIONARY_FILE)
示例15: get_topic_distribution
# 需要导入模块: from gensim import corpora [as 别名]
# 或者: from gensim.corpora import Dictionary [as 别名]
def get_topic_distribution(self, review):
"""
:type review: str
"""
review_bow = lda_context_utils.create_bag_of_words([review])
dictionary = corpora.Dictionary(review_bow)
corpus = dictionary.doc2bow(review_bow[0])
lda_corpus = self.lda_model.get_document_topics(corpus)
topic_distribution =\
lda_document_to_topic_distribution(lda_corpus, self.num_topics)
return topic_distribution
# TODO: Adapt this to a data structure in which a user can rate the same
# item multiple times in different contexts