728x90
설치
pip 로 릴리즈된 최신 버전 설치하기
pip install fasttext
git repository에서 개발중인 최신 버전 설치하기
git clone https://github.com/facebookresearch/fastText.git
cd fastText
sudo python setup.py install
텍스트 분류 및 단어 벡터화를 수행하는 예제
먼저 FastText의 Python API를 사용하여 텍스트 분류 모델을 학습하고 저장한다. 그런 다음 저장된 모델을 로드하여 테스트 데이터에 대해 예측을 수행합니다. 마지막으로 단어 벡터화 기능을 사용하여 주어진 텍스트의 단어 벡터를 얻는다.
import fasttext
# 텍스트 분류 모델 학습 예제
def train_text_classification_model(train_data_path, model_path):
# 학습 데이터 경로, 모델 저장 경로
model = fasttext.train_supervised(input=train_data_path)
model.save_model(model_path)
# 텍스트 분류 모델 테스트 예제
def test_text_classification_model(model_path, test_data):
model = fasttext.load_model(model_path)
result = model.predict(test_data)
print(result)
# 단어 벡터화 예제
def word_embedding(text):
model = fasttext.load_model('cc.en.300.bin') # 사전 학습된 모델 사용
embedding = model.get_sentence_vector(text)
print(embedding)
# 텍스트 분류 모델 학습
train_text_classification_model('train.txt', 'text_classification_model.bin')
# 학습된 모델로 테스트
test_text_classification_model('text_classification_model.bin', 'This product is amazing.')
# 단어 벡터화
word_embedding('hello world')
fasttext 학습용 데이터 전처리 코드
FastText의 학습을 위한 train.txt 파일은 각 줄에 하나의 텍스트 샘플과 해당 레이블이 포함되어야 한다. 레이블은 텍스트 뒤에 __label__ 접두어를 붙여서 표시해야 한다.
예를 들어, 긍정 리뷰는 __label__positive로 표시하고 부정 리뷰는 __label__negative로 표시한다.
다음 코드는 raw_data.txt와 같은 원본 데이터 파일을 읽어 각 줄에서 텍스트와 레이블을 추출하고, train.txt와 같은 FastText 학습 파일 형식에 맞게 변환하여 저장한다.
def fasttext_traindata(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as f:
lines = f.readlines()
with open(output_file, 'w', encoding='utf-8') as f:
for line in lines:
text, label = line.strip().split('\t') # 예를 들어, 탭으로 구분된 파일을 가정
formatted_line = f"__label__{label} {text}\n"
f.write(formatted_line)
# 예제 사용
input_file = 'raw_data.txt' # 원본 데이터 파일
output_file = 'train.txt' # 변환된 FastText 학습 파일
fasttext_traindata(input_file, output_file)
참고문서
728x90
'Data Science > Machine Learning' 카테고리의 다른 글
Gradio Example : Sentiment Analysis (0) | 2023.02.24 |
---|---|
[PyTorch] PyTorch Tutorial Projects (0) | 2023.02.07 |
[Sound Analysis] Sound-data Preprocessing : Librosa (0) | 2023.01.03 |
[Data Labeling] Label-Studio Review (2) | 2022.09.08 |
Data Labeling Tools Each Type (0) | 2022.09.07 |
최근댓글