# N-Gram

[NLP] Statistical Language Model
언어 모델(Language Model)은 연속된 단어(token)의 시퀀스에 확률을 할당(assign)하는 모델이다. 언어 모델은 크게 통계적 모델과 인공 신경망 모델로 구분할 수 있는데, 최근에는 본 포스트에서 언급한 희소 문제를 해결하며 훨씬 좋은 성능을 보여주는 인공 신경망 모델이 주로 사용된다. 본 포스트에서는 통계적 언어 모델(Statistical Language Model, SLM)에 대하여 알아보고, nltk를 이용하여 이를 구현한다. 조건부확률(Conditional Probability)과 조건부확률의 연쇄법칙(Chain Rule) 조건부 확률은 어떤 사건이 일어나는 경우에 다른 사건이 일어날 확률을 말하며, 사건 $A$와 사건 $B$에 대해 다음과 같이 표현된다. $$ P(A|B) = \frac{P(A \cap B)}{P(B)} $$ 위의 식에서 다음과 같은 식을 도출할 수 있다. $$ P(A \cap B) = P(B)P(A|B) $$ 이를 $n$개의 사건에 대

언어 모형(Language Model)
언어 모형 : 문장의 확률을 계산하기 위한 모형 확률의 연쇄 규칙 $P(x1, x2) = P(x2|x1)P(x_1)$ 인과적 언어 모형(=언어모형) : 조건부 확률 형태의 언어 모형 $P(xn|x1, x2, …, x{n-1})$ 인공신경망 등의 모형으로 구현하기 쉬움 단어를 순서대로 생성할 수 있음 n-gram 언어 모형 : 텍스트에서 최대 n개까지의 단어 조합의 빈도를 세서 언어 모형을 간단히 구현할 수 있음 storage problem : n이 커질 수록 조합이 폭발적으로 증가하여 많은 저장 공간 필요 sparsity problem : 텍스트가 충분히 많지 않으면 대부분의 조합은 빈도가 0 신경망 언어모형 (NNLM, Neural Network Langauge Model) 원핫 인코딩의 문제점: sparsity, 의미 무시

Efficient Estimation of Word Representations in Vector Space 상편
0. Word2Vec 요약 “같은 문장에서 나타난 단어들은 의미가 유사할 것이다.”를 가정으로 제안된 알고리즘 NNLM의 느린 학습 속도와 정확도를 개선한 것으로 NNLM은 이전에 등장한 단어들만 참고하지만, word2vec은 전후 단어 모두 참고한다. CBOW: 주변 단어들을 입력으로 받아 중간에 위치한 단어를 예측 Skip-gram: 중간에 있는 단어로 주변 단어들을 예측 ⇒ 둘 다 가중치 행렬을 2번 곱한 후, projection layer, output layer를 거치기 때문에 유사한 매커니즘이다. 본 논문은 대용량 데이터셋으로부터 continuous vector representation을 구하는 방법 2가지(CBOW, skip-gram) 방법을 제안했으며, 더 적은 연산량으로 더 높은 성능을 달성했다. 1. Introduction 이전까지는 n-gram, BoW(bag of words)처럼 one-
[프로그래머스] 뉴스 클러스터링 python
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17677 문제 설명 문제를 간단하게 설명하자면 다중집합으로 확장한 자카드 유사도를 구현하는 것이다. 두개의 문자열이 주어졌을때 각 문자열은 2-gram으로 쪼갠 다중집합에서 자카드 유사도를 구하는 것이다. 이어서 채원이의 야매 설명 (정확한 것은 구글링을 필요로 합니다...) 자카드 유사도란? 집합이 두개 주어졌을때 두 집합의 교집합 크기를 합집합 크기로 나눈것 n-gram이란? 2-gram을 예시로 들어 설명하면 "뉴스 클러스터링" 이란 문장이 주어졌을때 2-gram을 적용(?) 하면 ["뉴스","스 "," 클", "클러", "러스","스터","터링"] 으로 2 글자씩 쪼개지는 것을 말한다. 다중집합이란? 중복을 허용하는 집합을 말한다. 1차 시도 처음에 고민끝에 다중집합에 대해 조금 찾아보고 작성한 코드이다. 틀린 부분은 바로바로

Language Modeling & N-gram
1. Introduction to Lauguage Modeling 우선, Language Modeling의 가장 큰 목표는 아래와 같다. 문장에 대한 확률을 할당하자 NLP의 응용분야들을 생각했을 때, 이러한 목표는 당연하게 여겨진다. 가령, 기계번역 분야에서는 더 나은 번역 결과를 위해 여러 문장을 비교해야 할 때가 있다. 영어 : The car is fast 한글 1 : 그 자동차는 빠르다 한글 2 : 그 자동차는 단식중이다. 위의 결과로 봤을 때, 한글 2보다는 한글 1이 더 그럴싸한 문장이고, 이를 $P(한글1;영어)>P(한글2;영어)$와 같이 확률문제로 나타내 처리할 수 있기 때문이다. 번역이 아니더라도 수 많은 응용 분야(Q&A, Summarization, etc)에서도 단어의 확률, 문장의 확률 등의 문제로 치환시켜 풀 수 있다. 
파이썬 | 회문 판별과 N-gram 만들기
이번에는 문자열을 응용하여 회문을 판별하는 방법과 N-gram을 만드는 방법에 대해서 알아보자 1. 회문 판별하기 회문(palindrome)은 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장을 말한다. 예를 들어 "level", "SOS", "rotator", "nurses run"과 같은 단어와 문장이 있다. 그럼 문자열이 회문인지 판별하기 위해선 어떻게 할까? 회문은 첫 글자와 마지막 글자가 같다. 그리고 안쪽으로 한 글자 씩 좁혔을 때 글자가 같아서 서로 같으면 회문이다. Untitled 반복문으로 문자 검사하기 실행 결과 실행 결과 여기서 핵심인 개념은 문자열 길이이다. 판별을 할 때 문자열 길이를 기준으로 절반으로 나

[CS224N] Lecture 6: Language Models and Recurrent Neural Network
작성자: 고려대학교 통계학과 김현지 > Contents Language Modeling n-gram Language Model Neural Language Model RNN Language Model 1. Language Modeling Language Modeling: 주어진 단어의 시퀀스에 대해, 다음에 어떤 단어가 나올지 예측하는 작업 Language Model: Language Modeling을 수행하는 시스템 More formally: 단어들의 시퀀스 x^{(1)}, x^{(2)}, ..., x^{(t)}가 주어졌을 때, 다음 단어 x^{(t+1)}의 확률분포를 계산하는 것 
NLU 기술 상용화 이해
01 Frame Semantics 기반의 상용 NLU 기술 자연어 이해(NLU, Natural Language Understanding)는 사용자의 의도가 무엇인지 기계가 알 수 있도록 하는 것 02 개체명 추출 > 개체명 인식(Named Entity R

[Text Analytics] 4-1강: Count-based Text Representation
Document Representation 하나의 문서(document)를 어떻게 구조화된 방식으로 표현할 것인가?, Vector space를 기반으로 머신러닝 알고리즘을 적용하기 위해 비구조적인 text를 어떻게 구조적인 vector/matrix로 변환할 것인가? Bag of Words, Word Weighting, N-Grams이 있음 Bag of Words(BoW) 문서는 단어들의 집합인데, BoW는 문서를 표현할 때 단어의 순서는 고려하지 않고 표현하는 방법이다. 단어를 벡터로, 이산 공간(discrete space)에 표현한다. 위의 사진에 주어진 문서는 5개의 문장으로 구성된다. 이를 BoW로 표현하면: 각각의 문서에서 words에 해당하는 단어의 빈도수가 된다. 여기서 words는 5개의 문서

Lecture 6 - Natural Language Processing with Deep Learning
발표자 : Tobig's 13기 이혜민 > ## Contents 1.Language Modeling 2.N-gram Language Model 3.Neural Language Model 4.RNN Language Model 5.Perplexity 1. Language Modeling 많은 사람들이 자동완성 기능, 인터넷 검색과 같은 Language Model을 일상생활에서 사용합니다. Language Modeling : 현재까지 주어진 문장의 다음 단어를 예측
텍스트분석 스터디 (1)
해당 글 및 앞으로 이루어질 내용은 한국어 임베딩 이란 책을 공부하고 스터디하며 정리하는 내용 텍스트 분석 임베딩 방법에 있어서 큰 3줄기 가 있음 행렬 분해, 2. 예측, 3. 토픽 기반 행렬 분해 말뭉치 정보가 들어있는 원래 행렬을 두개 이상으로 쪼갬 ex) GloVe, Swivel => 후에 더 자세히... 아직은 가볍게 예측 어떤 단어 주변에 특정 단어가 나타날지 예측, 문장 내 일부 단어를 지우고 해당 단어가 무엇일지 맞추는 과정, 뉴럴네트워크 ex) Word2Vec, FastTest, BERT, ELMo, GPT 등 토픽 기반 주어진 문제에 잠재된 주제를 추론, LDA(Latent Dirichlet Allocation) 를통해. TF-IDF TF-IDF(w) = TF(w) x log($\frac{N}{DF(w)}$) 특징 : 단어 빈도 또는 등장 여부를 그대로 임베딩하기에는, 주제를 가늠할 수 없기 때문에

[CS224n] Lecture 6 - Language Models and Recurrent Neural Network
작성자 : 투빅스 13기 김민정 > Contents Language Modeling N-gram Language Model Neural Language Model RNN Language Model Perplexity 1. Language Modeling 많은 사람들이 자동완성 기능, 인터넷 검색 등의 Language Model을 일상생활에서 사용합니다. 자동완성, 인터넷 검색 기능처럼 현재까지 주어진 문장의

[R 텍스트 마이닝] 2. N-Gram 워드 클라우드 만들기
안녕하세요👏👏👏 지난 포스팅(> R로 크롤링 하기)에서 크롤링 해온 코로나 19에 대한 네이버 블로그 글을 가지고 워드 크라우드를 만들어 보겠습니다. 사실 처음 만들어본거라 많이 미흡합니다🤣 (원래 사전을 만들거나 받아와야 하는데 사전도 만들지 않았고요..) 무튼 무작정 만들어 본 이번 포스팅을 계기로, 사용한 패키지들을 더 자세히 공부해봐야겠습니다. 패키지 라이브러리 🧠 본 작업을 위해 많은 패키지 라이브러리가 필요했습니다. 워드클라우드 뿐만 아니라 상위 단어에 대해 바 그래프를 만들어 보려 합니다. 데이터 처리 ✍ 데이터 전처리 ![](https:/