반응형

Python 380

파이썬 개체명 태깅(NER Tagging) 방법 정리(nltk, spacy)

지난번에 nltk 및 spacy 모듈을 통하여 품사 태깅(POS Tagging) 방법을 다루었던 글에 이어 이번에는 두 모듈로 개체명 태깅(NER Tagging)을 진행하는 방법을 살펴보도록 하겠습니다. 품사 태깅 방법과 관련된 내용은 아래 글을 참고해주세요. 파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy) 파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되 jimmy-ai.tistory.com nltk를 활용한 NER Tagging 방법 nltk에서 개체명 태깅을 진행하려면 품사 태깅이 선행되어야 ..

Python/NLP Code 2022.11.09

파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy)

파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되지 않았다면 아래 명령어로 설치해줍니다. !pip install nltk 품사 태깅을 위해서는 영어 기준으로 아래의 내부 라이브러리를 설치하는 과정이 필요합니다. import nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger') 위 과정들을 마쳤다면 문장 토큰화 후 pos tagging을 다음과 같이 진행해주시면 됩니다. from nltk import word_tokenize, pos_tag senten..

Python/NLP Code 2022.10.29

TypeError: 'str' object does not support item assignment 해결법

개요 다음과 같은 문자열 a가 있다고 가정해보겠습니다. a = 'abcde' a의 3번 인덱스 위치의 'd'를 'g'로 바꾸려고 시도해보려는데, 다음과 같이 에러가 발생하였습니다. a[3] = 'g' # TypeError: 'str' object does not support item assignment 원인 자료형 종류에는 수정이 가능한 객체인 mutable 타입(리스트, 딕셔너리 등)이 있고, 수정이 불가능한 객체인 immutable 타입(튜플, 문자열 등)이 있는데 문자열은 immutable 자료형이라서 위와 같이 인덱싱(혹은 슬라이싱)을 통한 값 수정이 불가능한 것입니다. 해결 방법 1. 문자열 수동 할당 문자열 덧셈 연산으로 이어 붙이기가 되는 점을 이용하여 재할당을 해주는 방법입니다. 다만, ..

Python/Debugging 2022.10.26

UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int64') with casting rule 'same_kind' 해결법

오류 개요 두 넘파이 배열 a와 b에 대하여 a에 b를 더한 결과를 얻으려는 과정에서 아래와 같은 에러가 발생하였습니다. import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5.0, 6.0], [7.0, 8.0]]) a += b # UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int64') with casting rule 'same_kind' 오류 원인 위 예시에서 a는 정수형, b는 실수형 자료로 구성된 배열인데 += 연산을 수행하는 과정에서 서로 다른 자료형 배열 간의 casting이 unsafe하기 때문입니다. 해결 방법 1. 두 배열 자료..

Python/Debugging 2022.10.23

NLP Question Answering 전처리, 학습 및 성능 평가 코드 예제

HuggingFace에서 제공하는 transformers 모듈을 활용하여 pre-train model을 불러와 자연어 처리의 대표 task 중 하나인 Question Answering에 대하여 학습하고 검증하는 과정들의 파이썬 실습 코드 예제를 다루어보도록 하겠습니다. Step 1. 데이터셋 로드 및 전처리 과정 먼저, 학습을 위하여 데이터셋을 불러오고 모델 학습을 위한 전처리 과정을 수행해주어야 합니다. 여기서는 QA task의 대표 벤치마크 데이터셋인 SQuAD를 사용해보도록 하겠습니다. 전처리 과정에 대해서는 아래 링크의 허깅페이스 공식 페이지를 참고하였으니, 상세한 내용이 필요하신 분들은 해당 글을 참고해주세요. Question answering - Hugging Face Course Time t..

Python/NLP Code 2022.10.19

[Pytorch] 파이썬 Domain Adaptation 구현 예제(feat. DANN Loss)

이번 글에서는 파이토치로 DANN Loss를 활용한 Domain Adaptation을 간단하게 구현해보는 실습 코드 예제를 다루어보도록 하겠습니다. DANN Loss는 class label 분류 학습과 함께 domain 분류를 진행하되, domain 분류 layer의 gradient에 음수 배를 취하여 domain 간의 거리를 줄이도록 유도하는 학습을 통한 domain adaptation 방식으로 유명하게 사용되는 손실 함수 방식입니다. 여기에서는 예시로 두 숫자 글씨 데이터인 MNIST와 SVHN에 대하여 domain adaptation을 진행해보도록 하겠습니다.(아래 Figure와는 Source와 Target이 반대인 점을 유의해주세요.) Step 1. 데이터셋 로드 및 전처리 먼저, MNIST와 S..

Python/Pytorch 2022.10.14

파이썬에서 상수(const) 기능을 사용하는 방법

C++, JAVA 등 다른 언어에서 const로 사용되는 기능인 상수 선언을 Python에서도 사용이 가능할까요? 아쉽게도 파이썬에서는 직접적으로 상수를 선언하는 기능을 제공하고 있지 않습니다. 대신, 값이 변하지 않는 const 기능을 간접적으로 사용할 수 있는 몇 가지 테크닉을 정리해보도록 하겠습니다. 1. 함수로 선언 상수로 사용할 값을 변수가 아니라 함수로 선언하여 값 변경을 우회하는 방법입니다. 예를 들어, pi라는 값을 3.14로 선언하기 위해서 아래와 같이 함수로 구현할 수 있습니다. def pi(): return 3.14 선언한 값에 대하여 실제 사용 및 값 변경 시도 예시는 아래와 같습니다. print(pi() + 2) # 5.14 pi() = 5 # SyntaxError: can't a..

Python/Utils 2022.10.11

파이썬 소인수분해 함수 : sympy 모듈의 factorint

Python 소인수분해 라이브러리 함수 파이썬에서 정수에 대한 소인수분해를 손쉽게 바로 진행해줄 수 있는 함수인 sympy 라이브러리의 factorint에 대하여 다루어보도록 하겠습니다. 사용법은 매우 간단합니다. factorint(정수) 형태로 사용해주시면 소인수분해 결과가 key가 소인수 밑, value가 지수인 딕셔너리 형태로 반환됩니다. from sympy.ntheory import factorint factorint(12) # {2: 2, 3: 1} factorint(30) # {2: 1, 3: 1, 5: 1} factorint(17) # {17: 1} 참고로, 음의 정수에 대해서도 사용이 가능합니다.(-1을 추가 소인수로 가정합니다.) 또한, 0에 대해서도 사용이 가능한데, 이 때는 0^1을 ..

Python/Utils 2022.10.10

[Numpy] 파이썬 리스트(배열)에서 0이 아닌 값 위치/개수 찾기 : np.nonzero

Python numpy nonzero 파이썬의 리스트 혹은 배열에서 0이 아닌 원소들의 인덱스 번호나 개수를 찾을 수 있는 방법을 nonzero 함수의 사용법을 기준으로 다루어 보겠습니다. 1차원 리스트/배열의 경우 먼저, 1차원 리스트 혹은 배열 a에 대해서는 np.nonzero(a) 형태로 함수를 써주시면 0이 아닌 원소들의 위치들을 모아서 반환해줍니다. 개수는 해당 위치 배열의 길이를 통하여 바로 구할 수 있습니다. import numpy as np a = [0, 0, 1, 0, 0, 2, 0, 1] # 0이 아닌 인덱스 위치 np.nonzero(a) # (array([2, 5, 7]),) # 0이 아닌 원소의 개수 len(np.nonzero(a)[0]) # 3 2차원 이상 배열의 경우 2차원 이상..

Python/Numpy 2022.10.10

[Matplotlib] 파이썬 그래프 축 로그 스케일 지정 - xscale, yscale

Python plt log scale axis 파이썬에서 x축 및 y축의 눈금을 로그(log) 스케일로 지정할 수 있는 xscale 및 yscale 함수에 대하여 사용 예제를 살펴보도록 하겠습니다. 우선, 다음과 같이 간단한 바 그래프가 있다고 가정해 보겠습니다. import matplotlib.pyplot as plt plt.bar(['A', 'B', 'C', 'D', 'E'], [100, 500, 1000, 5000, 10000], color = 'b', alpha = 0.5) plt.show() 이제 위 그래프의 y축을 로그 스케일로 바꾸어보도록 하겠습니다. log 옵션 vs symlog 옵션 x축은 plt.xscale, y축은 plt.yscale 함수로 축의 스케일을 변경할 수 있습니다. 여기서 ..

Python/Matplotlib 2022.10.07
반응형