분류 전체보기 (25) 썸네일형 리스트형 선택 선호도 (selectional preference) 문장의 일부만 알고 있을 때, 다음 단어가 무엇이 나올지 알고 있다면, 혹은 그 구조에 특정 단어가 출현할 확률을 알고 있다면, 자연어 처리에 도움이 될 것이다. 선택 선호도는 특정 단어들이 동시 출현할 확률(서로 연관됐을 확률)이 있다면, 그 조건부 확률 p(w|x)는 문서에서 w가 출현할 확률 p(w)의 확률과는 확연히 다를 것이라고 가정한다. 예를 들어, "커피를"이라는 단어 뒤에 "마시다"가 나올 확률은 기존 문서에서 "마시다"가 나올 확률보다 훨씬 더 높을 것이다. (더 낮은 경우도 있을까?) 이를 쿨러-라이블러 발산 (KL divergence)를 사용해 선호도를 나타낸다. 더 세부적으로 들어가보자. 어떤 명사를 형용하는 동사를 동사 술어라고 한다. 어떤 명사들은 꼭 특정한 동사와 짝을 이뤄서 .. sliding window 자연어의 해석 방향은 무궁무진하다. 단어(word) 가 모여서 문장(sentence) 이 되고, 문장이 모여 글(text) 이 되고, 글이 모여서 말뭉치(corpus)가 된다. 자연어에 대한 통계적 접근은 보통 이 단위들의 빈번도 (frequency) 조사로 시작된다. tf-idf 를 통해 단어 각각의 빈번도에 대해서 알아보았다면, 이제 단어 간의 같이 출현할 확률과 같이 유기적인 관계에 대해서 조사하는 법을 알아보도록 하자. 두 단어가 같이 출현할 확률이라고 했을 때, 같이 출현하는 것에 대한 범위는 어떻게 정의할 수 있을까. 글 단위? 문장 단위? 아니면 해당 단어 바로 옆? 이를 window size라고 한다. window size가 1이라면, 해당 단어의 바로 앞 뒤의 단어들을 살피고, 5라면, .. 벡터 유사도 구하기 본 내용은 '김기현의 자연어 처리 딥러닝 캠프 -파이토치편'에서 발췌한 내용이다. L1 거리 L1 norm을 사용한 거리. 맨해튼 거리라고도 함. 두 벡터의 각 차원별 값의 차이의 절대값을 모두 합한 값 def L1_distance ( x1, x2 ) : return ((x1-x2).abs()).sum() L2 거리 L2 norm을 이용한 거리. 유클리디안 거리. 차원별 값 차이의 제곱의 합에 루트를 취한 값 def L2_distance ( x1, x2 ) : return ((x1-x2)**2).sum()**.5 Infinity Norm 차원별 값 차이 중 가장 큰 값. def inf_distance ( x1, x2 ) : return ((x1-x2).abs()).max() 코싸인 유사도 (Cosine .. defaultdict 파이썬에는 유용한 패키지들이 내장되어있다. 자주 쓰는 내장 패키지 중 하나는 collections이다. 이 패키지가 지원하는 defaultdict라는 자료구조에 대해 알아보자. # 기존 dictionary를 사용해서, 리스트에 대한 통계를 내고 싶을 때 ls = [{'red': 5}, {'blue': 3}, {'green': 1}, {'red': 3}] count_dict = {} for l in ls : for color, count in l.items() : if color not in count_dict.keys() : # count_dict의 key 안에 아직 해당 칼라에 대한 정보가 없을 때 count_dict[color] = count # 처음 들어온 color의 count를 default i.. 자연어 처리 자연어 처리 방법 - 단어 간의 유사도 - 단어를 수치적으로 표현하여 기계가 이해할 수 있도록 -> Word Embedding - 문장의 context 이해 -Token : 단어처럼 의미를 가지는 요소 -Morphemes : 의미를 가지는 언어에서 최소 단위 -POS : Nouns, Verbs (문법적 역할) -Stopword : I my, me, 조사, 접미사와 같이 자주 나타나지만 실제 의미에 큰 기여를 하지 못하는 단어들 -Stemming : 어간만 추출하는 것을 의미( running, runs, run -> run ) -Lemmatization : 앞뒤 문맥을 보고 단어를 식별하는 것 -Lexical Analysis (어휘분석) -WSD (word sense disambiguation) : 동형어.. lxrun 윈도우 cmd에서 bash command 이용하기 bash : linux command 윈도우에서 linux 커맨드를 사용할 수 있게 한다. lxrun /install 부분에서 막힘. reason : window64 버젼일 경우에도 System32에서 cmd가 돌아간다고 한다. System32와 같은 Directory에 있는SystemWOW64는 window32byte 버젼의 프로그램들이 64에서도 원만하게 실행될 수 있도록 한다. linux 사용을 enable할 때, 함께 들어오는 lxrun.exe 파일이 이 SystemWOW64에 없기 때문에 cmd가 lxrun.exe를 읽지 못한다고 함. 아직 해결 못함. 문장의 중간에 whitespace가 존재할 경우 corpus 정제할 때 목표 말뭉치에 whitespace가 존재할 경우 어떻게 해결하는지 알아보자. 예를 들어, ''' hey, siri. play me a song. something tender. ''' 사람이 읽는데는 문제가 없지만, 지저분하다. 'play me a song'은 분명 한문장인데, 사이에 '\n' (줄바꿈)이 거슬린다. phrases = '''hey, siri. play me a song. something tender.''' phrases = ' '.join([p.strip() for p in phrases.split('\n')]) sent_tokenize(phrases) 1) .split('\n') 함수로 문장을 엔터로 나눈다. 2) 나눈 문장을 ' ' (띄어쓰기)로 .join().. strip() whitespace = '\t', '\n', ' '과 같은 흰색 공백을 의미 strip = 벗기다. 맞다. 스트립쇼할 때 그 스트립이다. string에 .strip() 사용 '문장 처음과 끝'에 존재하는 whitespace를 없애준다. 이전 1 2 3 4 다음