Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

이용자 사전에 단어 추가시 최적의 스코어 자동 탐지 #38

Open
bab2min opened this issue Sep 4, 2021 · 0 comments
Open

Comments

@bab2min
Copy link
Owner

bab2min commented Sep 4, 2021

상황 설명

현재 이용자 사전에 신규 어휘를 추가할 경우 user_score를 직접 입력받도록 하고 있음. 이 값에 따라 동일한 입력에 대해서도 형태소 분석 결과가 달라질 수 있다.

add_word(골리, NNP, 0)
analyze(사람을 골리다)
: [사람/NNG, 을/JKO, 골리/NNP, 다/EC], -31.064453125

analyze(골리는 사람이다)
: [골리/NNP, 는/JX, 사람/NNG, 이/VCP, 다/EC], -25.12841796875
add_word(골리, NNP, -6)
analyze(사람을 골리다)
: [사람/NNG, 을/JKO, 골리/VV, 다/EC], -36.505615234375

analyze(골리는 사람이다)
: [골리/NNP, 는/JX, 사람/NNG, 이/VCP, 다/EC], -31.12841796875

골리라는 고유 명사를 추가할 때 score를 너무 높게 주면 골리다라는 동사를 잘못 분석할 수 있으며, 반대로 score를 너무 낮게 주면 골리라는 명사를 포함하는 분석 결과 자체가 누락될 가능성이 있다. 문제는 어휘에 따라 최적의 점수가 크게 바뀔 수 있기 때문에 이 값을 선택하는데에 어려움이 많다는 것. 이를 개선하기 위해 다음과 같이 자동화된 탐색 방법을 제안한다.

기능

추가하려는 신규 어휘의 품사에 맞춰 탐색 템플릿을 구축하여 둔다. 예를 들어 NNP의 경우 다음과 같다:

그 이름은 ___이다 : 그/MM 이름/NNG 은/JX ___/NNP 이/VCP 다/EF
___의 말을 따르면: ___/NNP 의/JKG 말/NNG 을/JKO 따르/VV 면/EC

위와 같은 템플릿은 학습 데이터에서 NNP가 등장하는 문맥을 모아서 NNP만 빈 칸으로 대체하면 확보가능하다. 마찬가지로 VV가 등장하는 문맥을 모아둔다. 해당 신규 어휘가 NNP로써 제대로 작동하려면 NNP 템플릿에 신규 어휘를 넣었을때 템플릿과 분석되는 사례가 많아야 하고, 반대로 VV 템플릿에 신규 어휘를 넣었을 때 NNP로 잘못 분석되는 사례가 적어야 한다. 따라서 이 둘을 기준 삼아 최적의 user score를 기계적으로 계산하는 것이 가능할 것으로 보인다.

문제는 품사별 양질의 템플릿을 구축하는 것인데 양이 너무 많으면 탐색에 걸리는 시간이 길어질 수 있으므로, 말뭉치 내에서 적당한 양의 데이터를 임의로 추출해보고 크기를 줄여가면서 성능이 나쁘지 않은 지점을 찾아야할 것으로 보인다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 할 일
Development

No branches or pull requests

1 participant