728x90
반응형

자연어처리 12

[오류Error] Resource punkt_tab not found. Please use the NLTK Downloader to obtain the resource:

텍스트 전처리 공부하는 중에 로컬에서 토크나이저를 수행하려고 하니 에러가 발생했다.sent_text = sent_tokenize(content_text){ "name": "LookupError", "message": "********************************************************************** Resource punkt_tab not found. Please use the NLTK Downloader to obtain the resource: >>> import nltk >>> nltk.download('punkt_tab') For more information see: https://www.nltk.org/data.html Attempte..

오류Error 2024.11.22

[pytorch] DTM과 TF-IDF | 텍스트 전처리 | 자연어 처리

DTM (Document-Term Matrix)이란?DTM은 여러 문서에서 단어의 빈도를 기록한 행렬(matrix)입니다. BoW와 유사하지만, 여러 문서 간의 단어 빈도수를 한꺼번에 분석할 수 있도록 확장된 형태입니다.- 행(Row): 문서 (Document)- 열(Column): 단어 (Term)- 값(Value): 특정 문서에 특정 단어가 등장한 빈도수DTM은 m x n 형태의 행렬로, `m`은 문서의 개수, `n`은 고유 단어의 개수를 의미합니다.  DTM의 예시다음과 같은 예제 문서들을 통해 DTM을 만들어 보겠습니다.문서 1: "나는 오늘 밥을 먹었다"문서 2: "밥을 먹고 운동을 했다"문서 3: "오늘 운동을 마치고 밥을 먹었다"1. 토큰화(Tokenization) 및 어휘 사전 생성  모든..

pytorch 2024.11.22

[pytorch] Bag of Words (BOW) | CountVectorizer

Bag of Words란?Bag of Words의 개념과 활용Bag of Words (BoW)는 문서를 단어의 빈도수로 표현하는 방법으로, 단어의 순서를 무시하고 각 단어가 문서에 얼마나 자주 등장했는지를 수치화하는 기법입니다. BoW는 단순하지만, 자연어 처리에서 기본적인 텍스트 표현 방법으로 널리 사용되며, 특히 문서 분류, 유사도 측정, 추천 시스템 등에서 유용합니다.Bag of Words의 특징BoW는 텍스트를 단어의 출현 빈도 기반으로 표현하기 때문에 두 가지 주요 특징을 가지고 있습니다. 1. 단어 순서 무시: BoW에서는 문장의 구조나 단어 순서를 전혀 고려하지 않습니다. 단어의 순서가 바뀌어도 단어 빈도만 같다면 BoW 벡터는 동일합니다.2. 단어 빈도 중심: BoW 벡터는 단어가 등장한 ..

pytorch 2024.11.19

[오류Error] FileNotFoundError: [Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib"

텍스트 전처리 공부하는 중에 로컬에서 토크나이저를 수행하려고 하니 에러가 발생했다. # 불용어 정의stopwords = ['의','가','이','은','들','는','좀','잘','걍','과','도','를','으로','자','에','와','한','하다']# 형태소 분석기 OKT를 사용한 토큰화 작업 (다소 시간 소요)okt = Okt()  ------> 에러 { "name": "FileNotFoundError", "message": "[Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib", "stack": "--------------------------..

오류Error 2024.11.15

[pytorch] 정수 인코딩(Integer Encoding) | Counter 와 FreqDist를 활용한 정수 인코딩 코드

정수 인코딩(Integer Encoding)은 자연어 처리에서 단어에 정수 인덱스를 할당하는 중요한 과정입니다.이 과정은 텍스트 데이터를 컴퓨터가 이해할 수 있도록 수치로 변환하며, 이후 원-핫 인코딩이나 워드 임베딩과 같은 심화된 작업의 기초가 됩니다. 정수 인코딩이란?정수 인코딩은 텍스트의 각 단어에 고유한 숫자를 할당하는 방식입니다. 가장 일반적인 방법은 텍스트에서 자주 등장하는 단어일수록 낮은 숫자를 부여하는 방식으로, 먼저 텍스트 데이터를 분석하여 등장 빈도가 높은 순서대로 단어 집합(vocabulary)을 생성합니다.이렇게 만들어진 단어 집합에서 가장 많이 사용되는 단어에는 낮은 숫자가 할당되고, 빈도가 낮은 단어일수록 높은 숫자가 할당됩니다. 예를 들어, 특정 텍스트 데이터에서 단어의 빈도를..

pytorch 2024.11.14

[pytorch] 어간 추출(stemming)과 표제어 추출 (Lemmatization)

자연어 처리(NLP)에서 어간 추출(Stemming)과 표제어 추출(Lemmatization)은 텍스트 데이터를 정제하고 분석하기 위한 전처리 과정입니다.이 두 기법은 단어의 형태를 변환하여 텍스트의 차원 수를 줄이고, 모델의 학습 성능을 향상하는 데 도움을 줍니다. 하지만 어간 추출과 표제어 추출은 각기 다른 방법론과 목적을 가지고 있습니다.어간 추출은 단어의 접사를 제거하여 기본 형태인 어간을 추출하는 기법으로, 규칙 기반 알고리즘을 사용하여 처리 속도가 빠르지만 의미의 정확성을 보장하지는 않습니다.반면, 표제어 추출은 단어의 문법적 맥락과 품사를 고려하여 사전에 나오는 기본 형태를 찾는 과정을 포함합니다. 이 과정은 보다 정교하며, 단어의 의미적 일관성을 유지합니다.이번 포스팅에서는 어간 추출과 표..

pytorch 2024.11.12

[pytorch] 토큰화 | 토크나이저(Tokenization)

자연어 처리(NLP)의 세계에서 '토큰화'는 텍스트 데이터를 컴퓨터가 이해할 수 있는 형태로 변환하기 위한 과정 중 하나로, 자연어를 잘게 쪼개어 분석 가능한 단위로 만드는 작업을 말합니다. 이 글에서는 토큰화의 정의와 유형, 그리고 사용 사례에 대해 자세히 살펴보겠습니다.토큰화란 무엇인가?토큰화(Tokenization)는 문장을 의미 있는 단위인 '토큰'으로 분리하는 과정을 의미합니다. 여기서 토큰은 단어, 어절, 혹은 심지어 문자일 수도 있습니다. 예를 들어, "오늘 날씨가 좋다"라는 문장은 토큰화 과정을 통해 ["오늘", "날씨가", "좋다"]와 같은 단어 단위로 나눌 수 있습니다. 컴퓨터는 이러한 토큰들을 통해 자연어 텍스트를 분석하고 이해할 수 있습니다.토큰화의 유형토큰화는 크게 두 가지 주요 ..

pytorch 2024.10.31

[밑바닥 DL] 4.word2vec와 추론 기반 기법 (feat.CBOW와 Skip-gram 모델로 단어 학습)

단어의 의미를 이해하고 처리하는 방법으로는 세 가지가 있다고 앞에서 설명했습니다.1. 시소러스를 활용한 기법2. 통계 기반 기법 시소러스와 통계 기반 기법(feat.동시 발생행렬, 코사인 유사도)자연어 처리란? 자연어 처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 처리하도록 하는 인공지능의 한 분야입니다. NLP의 목표는 인간의 언어를 이해하고 생성할 수 있는 시스템을 개resultofeffort.tistory.com  PPMI의 한계와 차원 감소(feat.SVD)1.PPMI의 한계 PPMI 에는 몇 가지 제약이 존재합니다. 가장 중요한 문제 중 하나는 말뭉치 내 어휘의 수가 증가함에 따라, 단어 벡터의 차원 또한 비례하여 증가한다는 것입니다. 예를 들어, 어..

밑바닥 DL 2024.05.01

[밑바닥 DL] 3.PPMI의 한계와 차원 감소(feat.SVD)

1.PPMI의 한계PPMI 에는 몇 가지 제약이 존재합니다. 가장 중요한 문제 중 하나는 말뭉치 내 어휘의 수가 증가함에 따라, 단어 벡터의 차원 또한 비례하여 증가한다는 것입니다. 예를 들어, 어휘 수가 10만 개에 이른다면, 각 단어 벡터는 10만 차원의 공간에 배치됩니다. 이렇게 고차원의 벡터는 계산적으로 부담스럽고, 현실적인 데이터 처리에 있어 심각한 제약을 의미합니다.더 나아가, 해당 이미지의 PPMI 행렬을 자세히 살펴보면, 대부분의 원소가 0이라는 점을 알 수 있습니다. 이는 벡터의 대부분의 원소가 중요하지 않음을 시사하며, 각 원소의 '중요도'가 낮다는 것을 의미합니다. 이는 데이터의 희소성을 나타내며, 해당 벡터가 노이즈에 취약하고 견고하지 않다는 문제점을 드러냅니다. 이러한 고차원이고 ..

밑바닥 DL 2024.04.05

[밑바닥 DL] 2.동시발생 행렬의 한계와 해결책(feat. PPMI)

동시발생행렬은 말뭉치(corpus) 내에서 일정한 맥락 안에서 각 단어 쌍이 함께 등장하는 횟수를 세는 표입니다. 언어학, 자연어 처리, 데이터 분석에서 관계와 패턴을 분석하는데 유용한 도구지만 몇 가지 한계가 있습니다. 1.동시발생행렬의 한계1. 희소성(Sparsity): 많은 단어 쌍들이 함께 등장하지 않거나 자주 등장하지 않을 수 있습니다. 이로 인해 많은 값이 0인 희소 행렬이 되고, 이는 저장과 처리에 있어서 계산 효율성이 떨어질 수 있습니다.2. 고차원성(High Dimensionality): 말뭉치의 어휘가 많을수록 동시발생행렬의 크기가 커져 다루기 어렵게 됩니다. 3. 맥락 부족(Lack of Context): 단어들이 등장하는 순서나 맥락을 포착하지 못합니다. 예를 들어 "개가 사람을 물..

밑바닥 DL 2024.03.14
728x90
반응형