반응형
/*******************************************************************************************************************
-- Title : [Py3.5] Korean POS Tagging w/ KLT
-- Key word : klt korean language technology korean pos_tag korean pos tagging 품사 태깅 한글
*******************************************************************************************************************/
■ Scripts(KLT.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#-*- coding:utf8 -*-
import os, re, codecs, sys
# =======================================
# -- KLT 호출(.exe 파일 이용)
# =======================================
def pos(_corpus, _infile='sample.in', _outfile='sample.out', _option='tip1+sw'):
# -- 문장 토큰 처리 후 공백이 100이하인 것만 사용(?)
corpus = [sent for sent in _corpus.split('.') if len(sent.split(' ')) < 100]
corpus = '.\n'.join(corpus)
# -- 파일 쓰기
ifile = codecs.open(_infile, 'w+', encoding='cp949')
ifile.write(corpus)
ifile.close()
# KLT 실행(read from ifile, write into ofile)
os.system( "kma.exe -"+' '.join([_option, _infile, _outfile]) )
# -- 파일 읽기
ofile = codecs.open(_outfile, encoding='KSC5601')
tagged_token = ofile.read()
ofile.close()
# -- 파일 삭제
os.remove(_infile)
os.remove(_outfile)
# -- 괄호() 내용을 추출하여 리스트로 전환
lst_token = re.findall(pattern='\([\w ]+\)', string=tagged_token)
# -- word와 tag의 분리
tokens = []
for ele in lst_token:
ele = ele.replace(' ', "','")
ele = ele.replace('(', "('")
ele = ele.replace(')', "')")
ele = eval(ele)
ele = (ele[1], ele[0])
tokens.append(ele)
return tokens
# =======================================
# -- 명사만 추출
# =======================================
def nouns(s):
tokens = pos(s)
return [token for token, tag in tokens if tag == 'N']
if __name__ == '__main__':
s = codecs.open('klt_sample.txt', encoding='cp949').read()
print('*'*100)
tagged_tokens = pos(s)
print(tagged_tokens)
noun_tokens = nouns(s)
print(noun_tokens)
|
cs |
■ Scripts(Main.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#-*-coding:utf-8-*-
import KLT
source = "간단히 설명하면, 본 발명은 풀크럼축 및 편심 크랭크핀에 대하여 작동하는 진동링크를 포함한 슬라이더 " \
"링크 프레스에 관한 것이다. 연결 링크는 상기 진동 링크를 슬라이드에 연결시킨다. 상기 진동 링크 및 " \
"풀크럼축은 압축 토크를 증가시키고 하향 압축 속도를 감소시키는 반면 상향 압축 속도는 증가시키도록 " \
"작동된다. 상기 편심 크랭크축은 상기 진동 링크를 작동시키고, 토크의 증가를 도우며, 왕복 운동성을 상기 " \
"슬라이드에 제공하고 있다. 슬라이드는 선회가능한 슬라이드 지브들을 포함하는데, 선회가능한 슬라이드 " \
"지브들은 왕복 고정 지브에 연결되어 평행한 면접촉을 유지하고 상기 슬라이드 및 프레스상에 가해지는 " \
"편심 하중을 흡수하고 제거한다. 스테이들 stay 및 스페이서 spacer 는 프레스의 측면을 정렬시키고 " \
"하중하에서의 굽힘을 제거하는 한편 편심 변형 압력을 흡수하고 분산시킨다. "
if __name__ == '__main__':
# -- PoS tagging
print(KLT.pos(source))
# -- Noun Words
print(KLT.nouns(source))
|
cs |
■ Files
KLT.zip(+부끄럽게 웃기)
반응형