基于PYTHON开发一个NLP自然语言处理模型。最终结果希望能输入标题自动匹配相应的文本内容。
已经实现了语言素材的采集,采用GENSIM进行摘要和文本内容的匹配。现在的匹配算法有问题,匹配程度太低,给出的标题不能匹配到合适的文本,需要改进。
目前想法是自己建立人工智能训练模型,可以设置每个标题中不同关键词的优先级和先后顺序以及权重,然后不断人工进行标记和素材录入进行模型训练,来提升模型的精确性。需要帮助请大神支招!
具体流程是如何,采用什么模型?具体步骤是什么样的?
def CompareArticle1(ArticleSection,Articlesummary):
# 文本集和搜索词
#texts = ['要深化大数据、人工智能等研发应用。当下,云计算、物联网、人工智能等技术飞速发展,并且在政务的“智能化”上发挥着日益重要的作用,要建设服务型政府,政务的“智能化”是必然方向。“互联网+政务服务”解决了信息采集、传输、监控等问题,能够促进各部门间数据共享,让群众和企业少跑腿、好办事、不添堵',
#print(type(texts))
texts=ArticleSection
# 1、将【文本集】生成【分词列表】
texts = [lcut(text) for text in texts]
# 2、基于文本集建立【词典】,并获得词典特征数
dictionary = Dictionary(texts)
num_features = len(dictionary.token2id)
# 3.1、基于词典,将【分词列表集】转换成【稀疏向量集】,称作【语料库】
corpus = [dictionary.doc2bow(text) for text in texts]
# 3.2、同理,用【词典】把【搜索词】也转换为【稀疏向量】
kw_vector = dictionary.doc2bow(lcut(keyword))
# 4、创建【TF-IDF模型】,传入【语料库】来训练
tfidf = TfidfModel(corpus)
# 5、用训练好的【TF-IDF模型】处理【被检索文本】和【搜索词】
tf_texts = tfidf[corpus] # 此处将【语料库】用作【被检索文本】
tf_kw = tfidf[kw_vector]
# 6、相似度计算
sparse_matrix = SparseMatrixSimilarity(tf_texts, num_features)
similarities = sparse_matrix.get_similarities(tf_kw)
#similarities = sparse_matrix.get_similarities(tf_texts)
#print("类型")
#print(similarities)
#升序排列用于输出,不能重新排序会打乱原来的文本的位置。
#similarities2= sorted(similarities,reverse=True)
#print(similarities2)
#print(similarities)
#print(sparse_matrix)
#for e, s in enumerate(similarities, 2):
# print('kw 与 text%s说 相似度为:%.2f' % (e, s))
return similarities
def find_sub_max(arr, n):
NumIndex=0
arr_=[]
for i in range(n-1):
arr_ = arr
arr_[np.argmax(arr_)] = np.min(arr)
arr = arr_
NumIndex=np.argmax(arr_)
print("# arr中第{}大的数为{},位于第{}位".format(n,np.max(arr_), NumIndex))
return NumIndex