import os
#작업하는 경로(위치)가 어디인지 확인
print(os.getcwd())
#절대경로
with open("D:/python/res/path_test/test.txt", "r", encoding="utf-8") as f:
data = f.read()
print(data)
#상대경로
with open("path_test/test.txt", "r", encoding="utf-8") as f:
data = f.read()
print(data)
cwd = current working directory 현재 작업 중인 디렉터리(폴더)를 의미하고,
get = 얻어온다는 의미가 있으니, 현재 작업 중인 폴더를 얻어온다는 의미가 되겠습니다.
NLTK와 같은 부엌 싱크대 NLP 연구 라이브러리를 포함한 모든 것이 아닙니다.대신 Gensim은 주제 모델링을위한 성숙하고 집중적이며 효율적인 NLP 도구 모음입니다.특히이 튜토리얼에서는 텍스트에서 새로운 단어 벡터를 학습하기위한 Word2Vec 단어 임베딩 구현을 지원합니다.
또한 사전 학습 된 단어 임베딩을 몇 가지 형식으로로드하고로드 된 임베딩을 사용하고 쿼리하기위한 도구를 제공합니다.
그런 다음Word2Vec.load ()함수를호출하여 저장된 모델을 다시로드 할 수 있습니다.예를 들면 :
model = Word2Vec.load('model.bin')
이 모든 것을 실제 예제와 함께 묶을 수 있습니다.
파일에서 큰 텍스트 문서 나 말뭉치를로드하는 대신 미리 토큰 화 된 문장의 작은 메모리 내 목록을 사용하여 작업합니다.모델이 학습되고 단어의 최소 개수가 1로 설정되어 단어가 무시되지 않습니다.
모델을 학습 한 후 요약하고 어휘를 인쇄 한 다음 '문장'이라는 단어에 대한 단일 벡터를 인쇄합니다.
마지막으로 모델은 바이너리 형식의 파일에 저장되고로드 된 다음 요약됩니다.
from gensim.models import Word2Vec
# define training data
sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
['this', 'is', 'the', 'second', 'sentence'],
['yet', 'another', 'sentence'],
['one', 'more', 'sentence'],
['and', 'the', 'final', 'sentence']]
# train model
model = Word2Vec(sentences, min_count=1)
# summarize the loaded model
print(model)
# summarize vocabulary
words = list(model.wv.vocab)
print(words)
# access vector for one word
print(model['sentence'])
# save model
model.save('model.bin')
# load model
new_model = Word2Vec.load('model.bin')
print(new_model)
참고:알고리즘 또는 평가 절차의 확률 적 특성 또는 수치 정밀도의 차이에따라 결과가 달라질 수 있습니다.예제를 몇 번 실행하고 평균 결과를 비교해보십시오.
다음과 같이scikit-learnPCA 클래스를사용하여 단어 벡터의 2 차원 PCA 모델을 만들 수 있습니다.
pca = PCA(n_components=2)
result = pca.fit_transform(X)
결과 투영은 다음과 같이 matplotlib를 사용하여 플로팅 할 수 있으며 두 차원을 x 및 y 좌표로 끌어낼 수 있습니다.
pyplot.scatter(result[:, 0], result[:, 1])
한 단계 더 나아가 그래프의 포인트에 단어 자체로 주석을 달 수 있습니다.좋은 오프셋이없는 조잡한 버전은 다음과 같습니다.
words = list(model.wv.vocab)
for i, word in enumerate(words):
pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
이 모든 것을 이전 섹션의 모델과 함께 종합하면 전체 예제가 아래에 나열됩니다.
from gensim.models import Word2Vec
from sklearn.decomposition import PCA
from matplotlib import pyplot
# define training data
sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
['this', 'is', 'the', 'second', 'sentence'],
['yet', 'another', 'sentence'],
['one', 'more', 'sentence'],
['and', 'the', 'final', 'sentence']]
# train model
model = Word2Vec(sentences, min_count=1)
# fit a 2d PCA model to the vectors
X = model[model.wv.vocab]
pca = PCA(n_components=2)
result = pca.fit_transform(X)
# create a scatter plot of the projection
pyplot.scatter(result[:, 0], result[:, 1])
words = list(model.wv.vocab)
for i, word in enumerate(words):
pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
pyplot.show()
예제를 실행하면 단어로 주석이 추가 된 점이있는 산점도가 생성됩니다.
참고:알고리즘 또는 평가 절차의 확률 적 특성 또는 수치 정밀도의 차이에따라 결과가 달라질 수 있습니다.예제를 몇 번 실행하고 평균 결과를 비교해보십시오.
이러한 작은 말뭉치가 모델에 적합하게 사용 되었기 때문에 그래프에서 많은 의미를 끌어 내기는 어렵습니다.
Word2Vec 모델의 PCA 투영 산점도
Google의 Word2Vec 임베딩로드
자신의 단어 벡터를 훈련하는 것이 주어진 NLP 문제에 대한 최선의 접근 방식 일 수 있습니다.
그러나 시간이 오래 걸리고 RAM과 디스크 공간이 많은 빠른 컴퓨터, 입력 데이터 및 학습 알고리즘을 미세 조정하는 데 일부 전문 지식이 필요할 수 있습니다.
사전 훈련 된 모델은 토큰 및 관련 단어 벡터를 포함하는 파일에 지나지 않습니다.사전 학습 된 Google word2vec 모델은 Google 뉴스 데이터 (약 1,000 억 단어)에서 학습되었습니다.300 만 개의 단어와 구가 포함되어 있으며 300 차원 단어 벡터를 사용하여 적합했습니다.
GloVe 웹 사이트에서 가장 작은 GloVe 사전 훈련 된 모델을 다운로드 할 수 있습니다.60 억 개의 토큰과 400,000 개의 단어 어휘로 Wikipedia 데이터에 대해 학습 된 4 가지 모델 (50, 100, 200 및 300 차원 벡터)이 포함 된 822MB zip 파일입니다.