Skip to content
코딩
- 성능을 위해 텍스트와 숫자를 일치시켜야 함
- 각 단어에 고유 색인이 필요합니다.
- 전처리는 텍스트가 디지털화되기 전에 가능한 한 많이 수행되어야 합니다.
정수 인코딩
- 빈도별로 정렬하고 높은 빈도에서 낮은 빈도로 정수를 지정하여 일련의 단어를 만들 수 있습니다.
- 가장 일반적인 단어부터 시작하여 한 번에 정수를 입력하여 빈도가 낮은 단어를 제외할 수도 있습니다.
- 희귀 단어를 제거하면 단어 집합에 없는 단어가 생성될 수 있습니다(어휘 부족 = OOV).
- 새 단어 “OOV”를 추가하고 문장에 없는 단어를 “OOV” 인덱스로 인코딩합니다.
- 이런 종류의 코딩 작업을 지원하는 라이브러리가 있습니다.
- 카운터, FreqDist, eumerate, keras.tokenizer
- 스위치
- 카운터(word_list): 키(단어)와 값(개수) 형태의 맵을 반환합니다.
- 그런 다음 다음 명령을 사용하여 반환 값에서 상위 주파수를 추출할 수 있습니다.
- result.most_commont(5) : 상위 5개 조회수
- NLTK의 FreqDisk
- Count와 마찬가지로 키 및 값 형식으로 단어 및 빈도를 반환합니다.
- 낱낱이 세다
- 정렬된 데이터 유형을 입력으로 사용하고 인덱스가 있는 값을 반환합니다.
- Keras 텍스트 전처리
- Keras의 Tokenizer.fit_on_tests를 사용하여 빈도를 기반으로 단어 집합을 생성합니다.
- Tokenizer.texts_to_sequences()는 말뭉치를 위해 단어를 지정된 인덱스로 변환합니다.
- 상위 n개를 추출하려면 토크나이저 생성 시 num_words 옵션을 n+1(패딩에 0 사용)으로 설정해야 합니다.
tokenizer = Tokenizer(num_words = 5 + 1)
- 상위 n개를 지정해도 단어 검색이나 인덱싱은 같은 방식으로 이루어집니다.
texts_to_sequences
API에 적용
- 기본적으로 OOV 단어는 제거되지만 유지하려면 oov_token 옵션을 사용하십시오.
tokenizer = Tokenizer(num_words = 5 + 1, oov_token = 'OOV')
가구류
- 서로 다른 집합은 병렬 작업을 위해 임의로 동일한 길이여야 합니다.
- 숫자 0을 사용하면 “제로 패딩”이라고 합니다.
- 가장 긴 문장의 길이를 추출하고 긴 문장보다 짧은 문장에 대해 가상의 단어 “PAD”를 추가합니다.
- “PAD”라는 단어는 숫자 0으로 정의됩니다.
긴 문장보다 짧은 문장에 0을 추가합니다.
- 가장 긴 문장이 항상 기준으로 사용될 필요는 없습니다.
- Keras에서 이 패딩 작업은 API로 노출됩니다.
from tensorflow.keras.preprocessing.sequence import pad_sequence
- 문장 시작 부분에 패딩 값을 추가하는 옵션을 지정할 수 있습니다.
단일 호스트 인코딩
- 단어 집합
- 다른 단어 세트
- 단어 변형도 다른 단어로 계산됩니다.
- 선글라스 단어 텍스트 벡터
- 표현할 단어의 인덱스에 값 1을 할당
- 예
- word_to_idx = {hello: 0, me: 1, is: 2, princess: 3}
- one_hot_encoding(hello, word_to_idx) = (1, 0, 0, 0)
- 벡터의 길이는 단어 집합의 크기입니다.
- Hello는 인덱스가 0이므로 벡터의 0번째 요소를 1로 변경합니다.
- “is”라는 단어가 (idx=2) -> (0, 0, 1, 0)인 경우
- Keras에는 인코딩된 값에 대해 원-핫 인코딩을 수행하는 API가 있습니다.
to_categorical
- 단어의 수가 증가함에 따라 벡터를 저장할 공간이 증가합니다(=벡터 차원이 증가함).
- 단어의 유사성을 표현하지 못함
- 단어의 잠재된 의미를 반영하여 다차원 공간에서 벡터화하는 기법이 있습니다.
데이터 분리
감독 학습
- “문제” 및 “수정” 데이터로 구성
- 기계가 문제와 정답을 보고 학습하고 정답이 없는 데이터에 대해 예측할 수 있습니다.
- 학습 후 평가를 위해 테스트 데이터에서 학습에 사용할 데이터를 분리합니다.
- x_train: 종이 데이터 조회
- y_train: 설문 응답 데이터
- x_test: 시험지 데이터
- y_test: 시험지 응답 데이터
- X와 Y 분리
zip()
또는 dp.DataFrame
또는 np.slicing
- 테스트 데이터의 분리
- scikit 실행
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size, random_state)
- X: 독립 변수 데이터(배열 또는 데이터 프레임)
- y: 레이블(정답) 데이터
- test_size: 테스트할 데이터의 개수, 1보다 작으면 비율로 간주
- random_state: 무작위 시드
- 데이터 순서의 내부 섞기
- 난수를 제공한 후 난수를 다시 작성하고 API를 호출하여 동일한 데이터를 얻을 수 있습니다.
- 어레이 슬라이싱도 수동으로 가능하지만 데이터가 섞이지 않거나 소수점 계산으로 인해 데이터가 누락될 수 있습니다.
한국 전처리 패키지
- PyKoSpacing
- 공백이 없는 문장은 공백이 있는 문장으로 변환됩니다.
- 파이 한스펠
- 네이버 한글 맞춤법 검사기를 기반으로 제작
- 거리 수정
- 소인프
- 품사 태깅, 단어 토큰화의 일부
- 기존 형태소와 달리 토크나이저가 단어의 빈도와 앞뒤 테스트를 결정합니다.
- 다음과 같은 미등록 단어 토큰화에 강함 나. 신조어
- 학습 기반 토크나이저
- 집계 확률을 계산하여 단일 단어 결정
- 분기 엔트로피
- 단어의 가능한 발생 수가 높을수록 더 큽니다.
- 명사 등이 하이픈으로 연결되지 않도록 사용자 지정 사전을 추가할 수 있습니다.