def Tokenizer(data):

    import pandas as pd
    from ckonlpy.tag import Twitter

    twitter = Twitter()

    #사용자 사전 추가
    txt = pd.read_csv('사용자 사전.txt', sep='\n')
    txt = txt['<사용자 사전>']
    for line in txt:
        twitter.add_dictionary(txt, 'Noun')

    # 데이터 가져오기
    data = data
    new_hashtags = data.hashtags.copy()

    # 토큰화
    for i in range(len(new_hashtags)):
        new_hashtags[i] = ' '.join(new_hashtags[i])

    tokenized = []

    for sentence in new_hashtags:
        tokens = twitter.morphs(sentence)
        tokenized.append(tokens)

    # 연속된 중복 제거
    new_tokenized = []

    for x in range(len(tokenized)):
        temp = []

        for y in range(len(tokenized[x]) - 1):
            if tokenized[x][y] != tokenized[x][y + 1]:
                temp.append(tokenized[x][y])

        new_tokenized.append(temp)

    return new_tokenized
Example #2
0
print('훈련용 스토리의 개수 :', len(train_stories))
print('훈련용 질문의 개수 :',len(train_questions))
print('훈련용 답변의 개수 :',len(train_answers))
print('테스트용 스토리의 개수 :',len(test_stories))
print('테스트용 질문의 개수 :',len(test_questions))
print('테스트용 답변의 개수 :',len(test_answers))

train_stories[3572]

train_questions[3572]

train_answers[3572]

twitter = Twitter()

print(twitter.morphs('은경이는 화장실로 이동했습니다.'))
print(twitter.morphs('경임이는 정원으로 가버렸습니다.'))
print(twitter.morphs('수종이는 복도로 뛰어갔습니다.'))
print(twitter.morphs('필웅이는 부엌으로 복귀했습니다.'))
print(twitter.morphs('수종이는 사무실로 갔습니다.'))
print(twitter.morphs('은경이는 침실로 갔습니다.'))

twitter.add_dictionary('은경이', 'Noun')
twitter.add_dictionary('경임이', 'Noun')
twitter.add_dictionary('수종이', 'Noun')

print(twitter.morphs('은경이는 화장실로 이동했습니다.'))
print(twitter.morphs('경임이는 정원으로 가버렸습니다.'))
print(twitter.morphs('수종이는 복도로 뛰어갔습니다.'))
print(twitter.morphs('필웅이는 부엌으로 복귀했습니다.'))
print(twitter.morphs('수종이는 사무실로 갔습니다.'))
            text = next(gen)
    elif cnt == 1 or cnt <= 0:
        cnt = 1
        text = next(gen)
    elif cnt >= 5966:
        print('!!!마지막 번호는 5965입니다')
        exit(0)
except:
    print('알맞은 숫자를 입력하세요. 프로그램 종료!')
    exit()

while True:
    precontent = text['content']['ccontent']
    precontent = re.sub('// flash.*\{\}', '', precontent)

    precontent = twitter.morphs(precontent)

    data = pd.read_csv('SentiWord_Dict2.txt', sep='\t', header=None)

    words = list(data.iloc[:, 0])
    score = list(data.iloc[:, 1])

    #content = content.split(' ')
    content = []

    for i in range(len(precontent)):
        if len(precontent[i]) >= 2:
            content.append(precontent[i])

    print('제목: ', text['ctitle'])
    print('언론사: ', text['content']['news_company'])
import string
import csv
from ckonlpy.tag import Twitter
twitter = Twitter()
f = open("Han.txt", mode = "r", encoding = "utf-8")
c = csv.writer(open("HanKeoRyeKonlPy.csv","w",encoding = "utf-8"))
for t in f:
    c.writerow(twitter.morphs(t))
    
Example #5
0
import urllib.request
from soynlp import DoublespaceLineCorpus
from soynlp.word import WordExtractor
from soynlp.tokenizer import MaxScoreTokenizer
from soynlp.tokenizer import LTokenizer
# -*- coding: utf-8 -*-
from ckonlpy.tag import Twitter

from pykospacing import spacing

#띄어 쓰기 자동으로 해줌
sent = "위 인수들을 사용할 때 고려해야 될점이있습니다. audio 데이터의 어떤 시점에 하나의 단어가 언급되고 있다면 그 단어는 잘려서 이상하게 인식될 것입니다. 이 harvard 데이터는 실험 목적으로 녹음된 것이기 때문에 초 단위로 잘라도 단어가 잘리지 않은 것 입니다."
new_sent = sent.replace(" ", '')
print(new_sent)
kospacing_sent = spacing(new_sent)
print(sent)
print(kospacing_sent)

#특정 단어 명사로 설정
twitter = Twitter()
#twitter.add_dictionary('띄어쓰기', 'Noun')
print(twitter.morphs(kospacing_sent))

    def token(self, title, ccontent, creplies):
        memory = psutil.Process(os.getpid())

        T_OR_title = []
        T_title = []
        T_OR_ccontent = []
        T_ccontent = []
        T_OR_creplies = []
        T_creplies = []

        twitter = Okt()  # 트위터 형태소 사전을 사용하기 위해 초기화
        twitter.add_dictionary('백래시', 'Noun')
        twitter.add_dictionary('문재앙', 'Noun')

        #### 타이틀 토큰화
        #print('1')
        for i in range(len(title)):

            a = twitter.pos(title[i])
            b = []
            #print('title[i]',i,title[i])
            for j in range(len(a)):
                if a[j][1] != 'Punctuation':  # 오류로 'Punctuation'에 해당하는 튜플 제거
                    b.append(a[j])
                    #print('3',j)
            T_OR_title.append(b)
            T_title.append(twitter.morphs(title[i]))

            #### ccontent 토큰화
            try:
                c = twitter.pos(str(ccontent[i]))
                d = []
                # print('ccontent[i]',i, ccontent[i])
                for w in range(len(c)):
                    if c[w][1] != 'Punctuation':  # 오류로 'Punctuation'에 해당하는 튜플 제거
                        d.append(c[w])
                        #print('4',w)
                T_OR_ccontent.append(d)
                T_ccontent.append(twitter.morphs(str(ccontent[i])))

            except RuntimeError as e:
                T_OR_ccontent.append('')
                T_ccontent.append(twitter.morphs(''))

            ### 댓글 토큰화
            #print('creplies[i]',i,creplies[i])

            if type(creplies[i]) == str:  # string형 댓글 토큰화
                a = [creplies[i]]  # string을 리스트로 변경
                e = twitter.pos(str(a))
                f = []
                for u in range(len(e)):
                    if e[u][1] != 'Punctuation':
                        f.append(e[u])
                    elif e[u][1] != 'KoreanParticle':
                        f.append(e[u])
                    else:
                        break
                    #print('5',u)
                T_OR_creplies.append(f)
                T_OR_creplies.append(twitter.pos(str(a)))
                T_creplies.append(twitter.morphs(str(a)))

            else:
                temp = []
                temp2 = []

                x = []

                for n in range(len(creplies[i])):  ### 리스트로 반환되는 댓글
                    h = twitter.pos(creplies[i][n])
                    #print('6',n)

                    for z in range(len(h)):
                        if h[z][1] != 'Punctuation':
                            x.append(h[z])
                        elif h[z][1] != 'KoreanParticle':
                            x.append(h[z])
                        else:
                            break
                    # print('7',z)
                    # print('8',)
                    #print('h',z,h)

                    temp.append(x)
                    temp2.append(twitter.morphs(creplies[i][n]))

                T_OR_creplies.append(temp)
                T_creplies.append(temp2)

        return T_OR_title, T_title, T_OR_ccontent, T_ccontent, T_OR_creplies, T_creplies
Example #7
0
hanspell_sent = spelled_sent.checked
print(hanspell_sent)

test_sent = spell_checker.check(sent2)
test2 = test_sent.checked
print(test2)

# !pip install konlpy
# !pip install customized_konlpy

from ckonlpy.tag import Twitter

twitter = Twitter()

twitter.morphs('은경이는 사무실로 갔습니다.')
twitter.add_dictionary('은경이', 'Noun')

print(twitter.morphs('은경이는 사무실로 갔습니다.'))

# 오늘의 마지막 문제. 문법에 맞지 않은 한글 문장을 문법검사해서 잘 구성한 다음 토큰화해서 RNN신경망에 입력되기 전 데이터인
# 훈련 데이터와 라벨로 구성되게 하시오

test = "RNN신경망은 너무어려워서 하나도모르 겠습니다.\n 외않되는지매 일공부해 봐도모르 겠습니다.\n 살려주세 요."
gram_test = spell_checker.check(test)
rs_test = gram_test.checked
print(rs_test)

from tensorflow.keras.utils import to_categorical
import numpy as np
from tensorflow.keras.preprocessing.sequence import pad_sequences
Example #8
0
#형태소 분석
import os
import json
#from konlpy.tag import Okt
from ckonlpy.tag import Twitter

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

file = open(os.path.join(BASE_DIR + '/t05/news1.txt'), 'r', encoding='UTF8')
text = file.read()
file.close()

#okt = Okt()
twitter = Twitter()
twitter.add_dictionary('K리그', 'Noun')

content = twitter.morphs(text)

num = 1
voca_dict = dict()
for word in content:
    voca_dict[num] = word
    num = num + 1

with open(os.path.join(BASE_DIR + '/t06', 'vocab.json'),
          'w+',
          encoding='UTF-8-sig') as json_file:
    json.dump(voca_dict, json_file, ensure_ascii=False)
Example #9
0
def kor_preprocessing(q, q3, df):
    data = df.copy().reset_index(drop=True)
    temp = []

    data = data.str.join('').str.replace(r"\n", "")
    data = data.str.replace(pat=r'[^\w]', repl=r'', regex=True)

    for i in range(len(data)):
        okt = Okt()
        new = okt.normalize(data[i])  # 정규화

        new = only_hangle(new)
        new = emoticon_normalize(new,
                                 num_repeats=2)  # ㅋㅋㅋㅋㅋㅋ -> ㅋㅋ, ㅠㅠㅠㅠ -> ㅠㅠ

        data[i] = data[i].replace(" ", '')

        spacing = Spacing()
        new = spacing(data[i])  # Apply space preprocessing
        try:
            new = spell_checker.check(new).checked  # 오타 처리
        except:
            print(new)
        temp.append(new)

    data = pd.Series(temp)

    # 신조어 사전 추가
    token = Twitter()  # 추가
    adding_noun = [
        '식후감', '존맛', '개존맛', '꿀맛', '짱맛', '요기요', 'ㅈㅁㅌ', 'ㅃㄲ', '소확행', '민초', '치밥',
        '소맥', '넘사벽', '순삭', '빛삭', '광삭', '반반무', '반반무마니', '솔까말', '스압', '썸남', '썸녀',
        'jmt', 'jmtg', 'jmtgr', 'JMT', 'JMTG', 'JMTGR', '배불띠', '돈쭐', '쿨타임',
        '닥추', '강추', '유튜버', '홧팅', '팟팅', '단짠단짠', '단짠', '맵단', '맵달', '맛도리', '부조캐',
        '밍밍쓰', '노맛', '존노맛', '최애', '차애', '섭스', '서빗', '프레젠또', '존맛탱', '개존맛탱',
        '존맛탱구리', '킹맛', '댕맛', '뿌링클', '로제', '오레오', '로투스', '사장님', '싸장님', '사장뉨'
        '소소한', '프라프치노', ' 프라푸치노', '갓성비', '커엽', '굳잡', '굿잡', '굳굳', '이벵트', '이벵'
    ]

    for i in adding_noun:
        token.add_dictionary(i, 'Noun')  # 명사 추가

    adding_verb = ['맛나', '마이쩡', '마이쪙', '마시땅', '마시쩡', '마시쪙']

    for i in adding_verb:
        token.add_dictionary(i, 'Noun')  # 동사 추가

    token.add_dictionary('잘', 'Noun')  # 동사 추가

    token = Okt()
    # 불용어 사전
    with open('stop.txt', 'rt', encoding='UTF8') as f:
        stopwords = f.read().replace('\n', ' ')
    stopwords = stopwords.split(' ')

    result = []
    for i in range(len(data)):
        review = data[i]
        temp = (token.morphs(review, norm=True, stem=True))

        stopwords_removed_sentence = [
            word for word in temp if not word in stopwords
        ]  # 불용어 제거
        sentence = ''

        for s in stopwords_removed_sentence:
            sentence = sentence + ' ' + s
        result.append(sentence)
    q.put(result)
    q3.put(df)