返回顶部

收藏

比较两个文本的相似性,分词版。

更多

比较两个带有中文文本的相似性。实现到了分词以及余弦定理。

#!/usr/bin/env python
# -*- coding: utf-8 -*

import re
from math import sqrt
#You have to install the python lib
import jieba

def file_reader(filename,filename2):
    file_words = {}
    ignore_list = [u'的',u'了',u'和',u'呢',u'啊',u'哦',u'恩',u'嗯',u'吧'];
    accepted_chars = re.compile(ur"[\\u4E00-\\u9FA5]+")

    file_object = open(filename)

    try:
        all_the_text = file_object.read()
        seg_list = jieba.cut(all_the_text, cut_all=True)
        #print "/ ".join(seg_list)
        for s in seg_list:
            if accepted_chars.match(s) and s not in ignore_list:
                if s not in file_words.keys():
                    file_words[s] = [1,0]
                else:
                    file_words[s][0] += 1
    finally:
        file_object.close()

    file_object2 = open(filename2)

    try:
        all_the_text = file_object2.read()
        seg_list = jieba.cut(all_the_text, cut_all=True)
        for s in seg_list:
            if accepted_chars.match(s) and s not in ignore_list:
                if s not in file_words.keys():
                    file_words[s] = [0,1]
                else:
                    file_words[s][1] += 1
    finally:
        file_object2.close()

    sum_2 = 0
    sum_file1 = 0
    sum_file2 = 0
    for word in file_words.values():
        sum_2 += word[0]*word[1]
        sum_file1 += word[0]**2
        sum_file2 += word[1]**2

    rate = sum_2/(sqrt(sum_file1*sum_file2))
    print 'rate: '
    print rate

file_reader('thefile.txt','thefile2.txt')
#该片段来自于http://outofmemory.cn

标签:python,算法

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. rfyiamcool 发表 2015-04-20 03:58:40 基于最少使用频次的LFU缓存淘汰算法
  2. 博主 发表 2014-12-29 11:55:33 对一个罗马数字与阿拉伯数字转换算法的分析
  3. mdjhny 发表 2013-02-17 16:00:00 Python 100题第四部分(节选自61-100题)
  4. 0X55AA 发表 2016-01-30 05:49:34 virtualenv源码阅读
  5. Yushneng 发表 2016-04-23 19:11:31 字符串匹配算法
  6. Yushneng 发表 2016-06-29 20:16:49 哈夫曼编码 —— Lisp 与 Python 实现
  7. youngsterxyf 发表 2012-11-21 16:00:00 pi的一种并行算法
  8. admin 发表 2014-08-14 16:25:45 【算法&数据结构】再次学算法之快速排序
  9. 0X55AA 发表 2016-10-26 06:14:30 用antlr生成Python语言的mysql语法解析器
  10. 0X55AA 发表 2015-01-31 13:54:10 python contextlib
  11. 博主 发表 2014-12-22 16:18:37 经典排序算法总结与实现
  12. tommy 发表 2016-01-03 02:56:04 用 Python 实现 K-近邻算法

发表评论