<jupyter_start><jupyter_text><jupyter_code>import nltk
nltk.download('punkt')
import urllib.request
import zipfile
from lxml import etree
import re
from nltk.tokenize import word_tokenize, sent_tokenize
urllib.request.urlretrieve("https://raw.githubusercontent.com/GaoleMeng/RNN-and-FFNN-textClassification/master/ted_en-20160408.xml", filename="ted_en-20160408.xml")

# xml 데이터
targetXML = open('ted_en-20160408.xml', 'r', encoding='UTF8')
target_text = etree.parse(targetXML)

# xml 파일에서 <conetnt></content> 사이 내용 가져옴
parse_text = '\n'.join(target_text.xpath('//content/text()'))
content_text = re.sub(r'\([^)]*\)', '', parse_text)

# 정규표현식으로 배경음 부분 제거 (audio), (laughter) 즉 괄호로 구성된 내용 제거함

sent_text = sent_tokenize(content_text)

# 입력 코퍼스를 NTLK로 문장 토큰화 수행

normalized_text = []
for string in sent_text:
  tokens = re.sub(r"[^a-z0-9]+", " ", string.lower())
  normalized_text.append(tokens)
# 구두점 제거 및 소문자로 변환

result = [word_tokenize(sentence) for sentence in normalized_text]

# 단어 토큰화 수행 

# 44초...?
print("총 샘플 개수 : {}".format(len(result)))
# 샘플 3개만 출력
for line in result[:3]:
    print(line)
from gensim.models import Word2Vec
model = Word2Vec(sentences=result, size=100, window=5, min_count=5, workers=4, sg=0)<jupyter_output><empty_output><jupyter_text>- size = 워드 벡터의 특징 값. 즉, 임베딩 된 벡터의 차원.- window = 컨텍스트 윈도우 크기- min_count = 단어 최소 빈도 수 제한 (빈도가 적은 단어들은 학습하지 않는다.)- workers = 학습을 위한 프로세스 수- sg = 0은 CBOW, 1은 Skip-gram.<jupyter_code>model_result = model.wv.most_similar("man")
print(model_result)
from gensim.models import KeyedVectors
model.wv.save_word2vec_format('eng_w2v')

loaded_model = KeyedVectors.load_word2vec_format("eng_w2v")
model_result = loaded_model.most_similar("man")
print(model_result)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13990825688073394, 'fraction_numerical': 0.026376146788990827, 'mean_word_length': 5.685823754789272, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '404821', 'license': 'MIT', 'n_tokens_mistral': 854, 'n_tokens_neox': 926, 'n_words': 152, 'path': 'colab/Word2Vec_1003_eng.ipynb', 'repo_name': 'cateto/python4NLP', 'size': '1744'}