#0. 자카드 유사도 구하는 함수
def jacard(a,b):
result1 = [] for i in range(len(a)-1): if a[i:i+2].isalpha()==True: result1.append(a[i:i+2].upper()) result2 = [] for k in range(len(b)-1): if b[k:k+2].isalpha()==True: result2.append(b[k:k+2].upper())
import collections
intersect = [] result = collections.Counter(result1) & collections.Counter(result2) # 교집합 intersect = list( result.elements() )
result2 = collections.Counter(result1) | collections.Counter(result2) # 합집합 union = list( result2.elements() ) kyu = len(intersect) hap = len(union) return kyu/hap
#1. 파일의 위치와 파일명을 받아서 파일안에 text 를 전처리하고 출력하는 함수 origin = 'd:\\data\\jobs.txt'
def before_text(name): c_jobs2 = open(name, encoding="utf8") # jobs.txt 텍스트 파일을 불러옵니다. jobs2 = c_jobs2.read().lower().replace('\n', ' ').split(' ') # 소문자변경, \n 지움 jobs3 = list( filter( lambda x : x != '', jobs2)) # '' <-- 를 리스트에서 다 지움 stev_a_1 = ' '.join(jobs3) # 리스트의 데이터를 문장으로 변경 return stev_a_1
#2. 논문들이 모아져있는 디렉토리안에 논문 파일명과 파일 위치를 가져오는 코드
import os # os에 파일들을 파이썬에서 다루기 위한 전문 모듈
dir_path = "c:\\data888\\" # 논문들이 모아져 있는 위치 res = os.listdir(dir_path) # data888 폴더에 있는 파일명들을 res 리스트에 담는다
res2 =[] for i in res: # res 리스트의 요소들을 하나씩 불러와서 i 에 넣고 res2.append( os.path.join( dir_path, i ) ) # c:\\data888\\a.txt <-- 이런식으로 #완성된 위치와 파일명을 res2 에 append 시킴
#3. 원본 논문과 다른 논문들 사이의 자카드 유사도를 출력하는 코드
origin = 'd:\\data\\jobs.txt' # 원본 논문의 위치와 이름을 origin 변수에 담는다 result = before_text(origin) # 원본 논문의 위치와 이름으로 안에 text 를 뽑아 # result 에 담습니다.
for i in res2: # 연설문의 위치와 이름을 하나씩 불러와서 k = before_text(i) # a.txt 안에 있는 연설문들을 텍스트로 k 에 담고 print( jacard(result , k ) ) # 하나씩 원본 논문과 자카드 유사도를 구합니다. |