一、概述
地址相似性判斷在金融反欺詐中有重要的應用,通過相似的地址判斷,構建知識圖譜,可以獲取申請客戶是否屬於同公司的欺詐申請。
二、關鍵步驟
(1)地址分詞
(2)制作地址語料庫
(3)相似性判斷
三、python實現
1.依賴包:jieba,gensim
2.地址歷史數據

3.測試地址
“北京市朝陽區建國門外大街5號院”
4.代碼
# 1 分詞
# 1.1 歷史比較文檔的分詞
all_doc_list = []
for doc in all_doc:
doc_list = [word for word in jieba.cut_for_search(doc)]
# doc_list = [word for word in jieba.cut(doc)]
all_doc_list.append(doc_list)
# 1.2 測試文檔的分詞
doc_test="北京市朝陽區建國門外大街5號院"
doc_test_list = [word for word in jieba.cut_for_search(doc_test)]
# doc_test_list = [word for word in jieba.cut(doc_test)]
# 2 制作語料庫
# 2.1 獲取詞袋
dictionary = corpora.Dictionary(all_doc_list)
# 2.2 制作語料庫
# 歷史文檔的二元組向量轉換
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]
# 測試文檔的二元組向量轉換
doc_test_vec = dictionary.doc2bow(doc_test_list)
# 3 相似度分析
# 3.1 使用TF-IDF模型對語料庫建模
tfidf = models.TfidfModel(corpus)
# 獲取測試文檔中,每個詞的TF-IDF值
tfidf[doc_test_vec]
# 3.2 對每個目標文檔,分析測試文檔的相似度
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
sim = index[tfidf[doc_test_vec]]
# 根3.3 據相似度排序
sorted(enumerate(sim), key=lambda item: -item[1])
結果
[(3, 0.7674924), (7, 0.73630047), (4, 0.7342692), (10, 0.7111159), (0, 0.70615286), (11, 0.42776945), (6, 0.3859625), (2, 0.3746654), (8, 0.36219177), (1, 0.35470122), (9, 0.30778316), (5, 0.29451278), (12, 0.08421353), (13, 0.0), (14, 0.0), (15, 0.0), (16, 0.0), (17, 0.0)]
5.優化方向
1.是否需要加停用詞過濾?
2.是否需要提取地址關鍵詞?
