lovit / customized_konlpy

Customized KoNLPy - Korean Natural Language Processing Toolkit KoNLPy wrapping code
GNU General Public License v3.0
126 stars 24 forks source link

konlpy twitter와 ckonlpy twitter token 결과 문의 #20

Open violetJMoon opened 5 years ago

violetJMoon commented 5 years ago

사용자사전을 추가해 pos, token 결과 비교해보고 있는데 결과가 다른 부분이 있어 문의드립니다.

print(twitter_original.pos('육성재가 출연하는 프로그램은 집사부일체이다')) konlpy의 기본 twitter로 위의 문장을 분석한 결과 아래와 같이 나옵니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출연', 'Noun'), ('하는', 'Verb'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집사부', 'Noun'), ('일체', 'Noun'), ('이다', 'Josa')]

그리고 ckonlpy의 twitter로 분석한 결과 아래와 같이 나옵니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출', 'Verb'), ('연하', 'Noun'), ('는', 'Josa'), ('TV', 'Alpha'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집', 'Noun'), ('사부일체', 'Noun'), ('이다', 'Josa')]

위의 konlpy twitter 처럼 '출연'이란 단어를 Noun으로 주고, 프로그램을 하나의 명사로 만들어주기 위해 twitter.add_dictionary(['집사부일체','TV'], 'Noun') twitter.add_dictionary('출연', 'Noun') 위와 같이 add_dictionary를 수행했습니다.

print(twitter.pos('육성재가 출연하는 TV 프로그램은 집사부일체이다')) 그리고 결과를 보기위해 위와 같이 ckonlpy에 넣어 확인했는데 '출연' 부분이 수정되지 않았습니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출', 'Verb'), ('연하', 'Noun'), ('는', 'Josa'), ('TV', 'Noun'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집사부일체', 'Noun'), ('이다', 'Josa')]

왜 반영이 되지 않는 것인지 반영하고자 하면 어떻게 바꿔줘야 하는지 궁금합니다.

kimutak0000 commented 5 years ago

안녕하세요. 같은 문제가 발생합니다. twitter.add_dictionary('삼성', 'Company', force=True)를 할 경우 print(twitter.pos('삼성은 우리나라의 위대한 기업이다.')) [('삼성', 'Noun'), ('은', 'Josa'), ('우리나라', 'Noun'), ('의', 'Josa'), ('위대', 'Noun'), ('한', 'Josa'), ('기업', 'Noun'), ('이다', 'Josa'), ('.', 'Punctuation')]

명사태그에 삼성이 이미 존재하여 반영이 되지 않는 것 같은데 어떠한 방법으로 바꿀 수 있는지 궁금합니다.

whdk999 commented 4 years ago

사용자사전을 추가해 pos, token 결과 비교해보고 있는데 결과가 다른 부분이 있어 문의드립니다.

print(twitter_original.pos('육성재가 출연하는 프로그램은 집사부일체이다')) konlpy의 기본 twitter로 위의 문장을 분석한 결과 아래와 같이 나옵니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출연', 'Noun'), ('하는', 'Verb'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집사부', 'Noun'), ('일체', 'Noun'), ('이다', 'Josa')]

그리고 ckonlpy의 twitter로 분석한 결과 아래와 같이 나옵니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출', 'Verb'), ('연하', 'Noun'), ('는', 'Josa'), ('TV', 'Alpha'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집', 'Noun'), ('사부일체', 'Noun'), ('이다', 'Josa')]

위의 konlpy twitter 처럼 '출연'이란 단어를 Noun으로 주고, 프로그램을 하나의 명사로 만들어주기 위해 twitter.add_dictionary(['집사부일체','TV'], 'Noun') twitter.add_dictionary('출연', 'Noun') 위와 같이 add_dictionary를 수행했습니다.

print(twitter.pos('육성재가 출연하는 TV 프로그램은 집사부일체이다')) 그리고 결과를 보기위해 위와 같이 ckonlpy에 넣어 확인했는데 '출연' 부분이 수정되지 않았습니다. [('육성재', 'Noun'), ('가', 'Josa'), ('출', 'Verb'), ('연하', 'Noun'), ('는', 'Josa'), ('TV', 'Noun'), ('프로그램', 'Noun'), ('은', 'Josa'), ('집사부일체', 'Noun'), ('이다', 'Josa')]

왜 반영이 되지 않는 것인지 반영하고자 하면 어떻게 바꿔줘야 하는지 궁금합니다.

안녕하세요. ckonlpy 사용자 입니다.

'출연하는'이란 것은 아마 출연 - 명사, 하는(원형 '하다') - 동사로 나와야 할 것 같습니다. 그런데 출연을 명사로 등록하였는데도 안나온 것은 아마 '하'라는 글자가 분리 될 수 없어서(?)가 아닌가 싶습니다.

twitter.add_dictionary('하는', 'Verb')로 등록하면 원하시는 결과가 나오는 것 같습니다.^^