class Text_mining():
def __init__(self):
pass
def find_word(self):
from time import sleep
script = input('script : ')
word = input('word : ')
file = open("D:\\data\\" + script, 'r')
sum = 0
for file_list in file: # 스크립트를 리스트로 바꾸기
a = file_list.split(' ') # 단어를 공백 기준으로 쪼개기
for b in a: # 단어를 하나씩 b에 담기
sum = sum + b.lower().count(word)
msg = '\r찾은 개수 : %d' %sum
print(msg, end='')
sleep(0.0001)
def positive_cnt(self):
import re
positive = []
sum = 0
for i in open("D:\data\positive-words.txt", 'r'): # 긍정단어 리스트 만들기
positive.append((re.sub("\n", '', i)).upper())
k2 =[]
for j in open("D:\data\Sherlock.txt", 'r'): # 셜록홈즈 로딩
for k in re.sub('[^A-z ]', '', re.sub("\n", '', j)).strip().upper().split(' '): # 셜록홈즈 텍스트 정제
if k in positive: # 긍정단어 카운트
if k!='':
print(k)
sum = sum + 1
k2.append(k)
print('긍정개수',sum)
def negative_cnt(self):
import re
positive = []
sum = 0
for i in open("D:\data\negative-words.txt", 'r'): # 긍정단어 리스트 만들기
positive.append((re.sub("\n", '', i)).upper())
k2 =[]
for j in open("D:\data\Sherlock.txt", 'r'): # 셜록홈즈 로딩
for k in re.sub('[^A-z ]', '', re.sub("\n", '', j)).strip().upper().split(' '): # 셜록홈즈 텍스트 정제
if k in positive: # 긍정단어 카운트
if k!='':
print(k)
sum = sum + 1
k2.append(k)
print('부정개수',sum)
def positive(self):
import re
dict = open("d:\\data\\positive-words.txt")
text_file = input('Enter a file name to search : ')
text_file = open("d:\\data\\" + text_file,"r")
text = []
for text_list in text_file: # 스크립트를 리스트로 바꾸는 과정
a = text_list.split(' ') # 한줄을 공백으로 자르는 과정
for i in a:
text.append(i.upper())
positive = []
for i in dict:
positive.append((re.sub("\n", '', i)).upper()) # 엔터를 '' 로 바꿔라
temp = []
for j in text:
for k in re.sub('[^A-z ]', '', re.sub("\n", '', j)).strip().upper().split(' '):
if k in positive:
temp.append(k)
temp = list(filter(lambda x: x!= '', temp))
print(len(temp))
import simplejson
f = open('d:\\data\\output_pos.txt', 'w')
simplejson.dump(temp, f)
f.close()
def show_cloud(self):
from wordcloud import WordCloud, STOPWORDS # 워드 클라우딩 모듈
import matplotlib.pyplot as plt # 시각화 모듈
from os import path # 텍스트 파일을 불러오기 위한 open, path 하기 위해 os 임포트
script = input('script : ')
d = path.dirname("d://data\\") # 텍스트 파일이 있는 상위 디렉토리를 path로 지정
text = open(path.join(d, script), mode="r", encoding="UTF-8").read() # 텍스트파일을 open 하는데 reading만 되게 (mode="r"), UTF-8 방식으로 불러옴(UTF-8)
wordcloud = WordCloud( # 폰트 위치(거의 기본적으로 C://Windows//Fonts 안에 들어있습니다)
stopwords=STOPWORDS, background_color='black', # STOPWORDS 옵션은 공백/줄바꾸기 기준으로 단어를 추출해 냅니다
width=1000, # background_color는 워드클라우드 배경색을 나타냅니다. 'black'으로하면 검은색이 됩니다.
height=800, # width와 height는 워드클라우드의 크기를 지정해 줍니다.
colormap='Accent').generate(text) # colormap은 워드 색깔을 지정해주는데 첨부한 색감표를 사용하시면 됩니다. generate() 메소드는
# 워드 클라우드를 생성합니다
plt.figure(figsize=(13,13)) # matplotlib의 pyplot을 figsize로 생성합니다
plt.imshow(wordcloud) # 워드 클라우드 이미지를 pyplot에 띄웁니다
plt.axis("off") # pyplot에 x, y축 표시를 없앱니다.
plt.show() # 워드 클라우드를 보여줍니다
def special_cnt(self):
script = input('script : ')
text_file = open("D:\\data\\"+script,'r')
lines = text_file.readlines()
total1 = 0
total2 = 0
for s in lines:
cnt1 = sum( i.isdigit() or i.isalpha() or i.isspace() for i in s )
cnt2 =sum( 1 for i in s )
total1+=cnt1
total2+=cnt2
print( total2-total1 )
#########실행########
#import Text_mining_file as tm
tm = Text_mining()
print(tm.special_cnt())