본문 바로가기
  • 공부 기록 인생 기록

Python/NLP18

펄플렉서티(Perplexity, PPL) 펄플렉서티(Perplexity, PPL) - 언어 모델의 평가 방법 - perplexed : 헷갈리는. PPL : 헷갈리는 정도 - PPL이 낮을수록 언어 모델의 성능이 좋다 - 문장의 길이로 정규화된 문장 확률의 역수 N : 문장 W의 길이 - PPL은 이 언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민하는지를 의미 - ex) PPL = 10 : 다음 단어를 예측하는 모든 시점마다 평균 10개의 단어를 가지고 어떤 것이 정답인지 고민 다음 단어를 예측하는 모든 시점마다 1/10 확률 PPL이 작다면 이 확률이 줄어들어서 성능이 좋은 것! - PPL이 낮다는 건 테스트 데이터 상에서 높은 정확도를 보인다는 뜻 - 사람이 직접 느끼기에 좋은 언어모델이라는 걸 바드시 의미하지는 않음 - .. 2023. 3. 14.
N-gram 언어 모델 N-gram 언어 모델 - 카운트에 기반한 통계적 접근 - SLM - 이전에 등장한 모든 단어를 고려하는 것이 아니라 일부 단어만 고려 - 일부 단어 몇개를 보느냐 - N-1 SLM의 한계 - 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있음 - 확률을 계산하고 싶은 문장이 길어질수록 코퍼스에서 그 문장이 존재하지 않을 가능성이 높음 - 카운트할 수 없을 가능성 높음 갖고있는 코퍼스에 정확하게 An adorable little boy is가 있을 가능성 보다 boy is라는 더 짧은 단어 시퀀스가 존재할 가능성이 더 높음 기준 단어(is)의 앞 단어를 전부 포함해서 카운트 하는 것이 아니라 앞 단어 중 임의의 개수만 포함해서 카운트하여 근사 N-gram 언어모델 - 갖고있는 코퍼스에서 N.. 2023. 3. 14.
언어 모델 - 통계적 언어 모델 언어 모델(Languagel Model, LM) - 단어 시퀀스(문장)에 확률을 할당하는 모델 - by 이전 단어들이 주어졌을 때 다음 단어 예측 - 가장 자연스러운 단어 시퀀스를 찾아내는 모델 - 만드는 방법 : 통계를 이용한 방법, 인공신경망 - 언어모델링 : 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업 언어모델의 유형 - 이전 단어들이 주어졌을 때 다음 단어를 예측 - 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측(BERT) 언어모델은 확률을 통해 보다 적절한 문장을 판단한다! - 기계 번역 ex) P(나는 버스를 탔다) > P(나는 버스를 태운다) - 오타 교정 ex) 선생님이 교실로 부리나케 P(달려갔다) > P(잘려갔다) - 음성 인식 ex) P(나는 메롱을 먹는다) < P(.. 2023. 3. 14.
정제, 정규화 토큰화 작업 전, 후에는 텍스트 데이터를 용도에 맞게 정제(cleaning) 및 정규화(normalization)하는 일이 함께한다 정제 - 갖고 있는 코퍼스로부터 노이즈 데이터를 제거 - 토큰화 작업 전,후에 모두 이뤄질 수 있다 - 완벽한 정제는 어려운 편이라, 합의점을 찾기도함 노이즈 데이터 - 분석 목적에 맞지 않는 불필요한 단어들 - 제거 방법 - 불용어 제거 - 등장 빈도가 적은 단어 제거 ex)스팸메일 분류에서 100000개의 데이터 중 5번 등장한 단어는 도움이 안됨 - 길이가 짧은 단어 제거 - 영어권에서는 길이가 짧은 단어들은 대부분 불용어, 하지만 한국어는 아님 - 노이즈 데이터의 특징을 잡아낼 수 있다면 정규표현식으로 제거 ex) re.sub https://wikidocs.net/2.. 2023. 2. 19.
konlpy 사용 시 오류 https://default-womyn.tistory.com/entry/konlpy-Okt-%EC%98%A4%EB%A5%98-No-JVM-shared-library-file-jvmdll-found 구글링 해봤더니 Program Files에 JAVA가 존재해야했고 경로 설정이 불가능했다. 그래서 일단 아래 링크에서 JAVA 설치 https://www.oracle.com/java/technologies/downloads/#jdk19-windows Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.. 2023. 2. 18.
토큰화(Tokenization) 토큰화(tokenization) - 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업 - 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의 토큰화에서 고려해야할 상황 - 구두점이나 특수 문자를 단순 제외해서는 안됨. - 구두점조차도 하나의 토큰으로 분류하기도 함. ex) 마침표(.)는 문장의 경계를 알 수 있게 해줌 - 단어 자체에 구두점이나 특수문자를 갖고 있는 경우도 있음. ex) $45.55, 01/02/06, 숫자 사이의 컴마 - 줄임말과 단어 내에 띄어쓰기가 있는 경우 ex) we're, New York - 사용하는 코퍼스가 어떤 국적의 언어인지, 또는 해당 코퍼스 내에서 특수문자들이 어떻게 사용되고 있는지 - 100% 정확도를 얻는 건 쉽지 .. 2023. 2. 17.