pip install-r iba6104_final_requirements.txt #检查安装包
#Q6
from nltk.corpus import stopwords
import string
from nltk.tokenize import TreebankWordTokenizer
stoplist = set(stopwords.words('english'))
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
corpus_cleaned = []
for cor in corpus:
res = re.sub(f'[{re.escape(string.punctuation)}]', '', cor)
res = res.lower()
tokenizer = TreebankWordTokenizer()
words = tokenizer.tokenize(res)
stop_words = stopwords.words("english")
words = [w for w in words if w not in stop_words]
corpus_cleaned.append(' '.join(words))
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
# Using defaultdict
from collections import defaultdict
frequency = defaultdict(int)
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
for cor in corpus_cleaned:
wl = cor.split()
for w in wl:
frequency[w] += 1
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
sorted_freq = sorted(frequency.items(), key = lambda x: x[1], reverse = True)
pprint(sorted_freq[:5])
from sklearn.feature_extraction.text import TfidfVectorizer
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
tfidf_vectorizer = TfidfVectorizer(ngram_range=(1,2),
token_pattern= '(\S+)')
X = tfidf_vectorizer.fit_transform(corpus_cleaned)
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
pprint(get_feature(X[0], tfidf_vectorizer))
from gensim.models import LdaModel
from gensim.corpora import Dictionary
seeds = 42
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
texts = []
for cor in corpus_cleaned:
wl = cor.split()
texts.append(wl)
dictionary = Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
lda_model = LdaModel(corpus=corpus, id2word = dictionary, chunksize=2000, iterations=20, alpha='auto', eta='auto', passes=20,eval_every=None, num_topics=10, random_state = seeds)
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
from gensim.models.coherencemodel import CoherenceModel
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
# Umass topic coherence
num_topics = 10
top_topics = lda_model.top_topics(corpus)
coherence = sum([t[1] for t in top_topics]) / num_topics
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
print("UMass Coherence of LDA (#topics={}): {}".format(num_topics, coherence))
Q7
nodes = []
edges = []
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
for index, row in tqdm(creator_data.iterrows(), total=creator_data.shape[0]):
for index2, row2 in collaborator_data[collaborator_data['file_id'] == row['file_id']].iterrows():
edges.append((index,index2))
nodes=creator_collaborator_index['ID'].tolist()
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
import networkx as nx
G = nx.Graph()
G.add_nodes_from(list(nodes))
G.add_edges_from(list(edges))
print("#Nodes: {}".format(G.number_of_nodes()))
print("#Edges: {}".format(G.number_of_edges()))
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
degree_dict = nx.degree(G)
# sort0 = sorted((d for n, d in G.degree()), reverse=True)
sorted_degree=[]
dic = {}
for word_pair in degree_dict:
word_pair_list = list(word_pair)
dic[word_pair_list[0]]=word_pair_list[1]
dic_sort=sorted(dic.items(),key=lambda x:x[1],reverse=True)
for i in dic_sort:
sorted_degree.append(i[0])
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
print("Top 20 nodes by degree:")
pprint(sorted_degree[:20])
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
density = nx.density(G)
transitivity = nx.transitivity(G)
###########################################################################
# Please Modify & Input Your Code Above
###########################################################################
It is doable, 頑張ります!