이 작업은 주어진 텍스트 파일에서 단어들을 읽고, 각 단어에 대해 형태소 태깅을 한 후, 그 결과를 새로운 파일에 저장하는 과정입니다. 형태소 분석을 위한 도구로 pymorphy2 라이브러리를 사용하겠습니다.

  1. 필요한 라이브러리를 설치하고 임포트합니다.

    !pip install pymorphy2
    import pymorphy2
    
  2. 파일 경로를 설정합니다.

    filtered_input_file = 'filtered_lemmatized_words.txt'
    tagged_output_file = 'tagged_words.txt'
    

    불용어 처리 결과인 filtered_lemmatized_words.txt 파일을 사용하겠습니다.

  3. 형태소 분석기(Morphological Analyzer)를 설정합니다.

    morph = pymorphy2.MorphAnalyzer()
    
  4. 형태소 태깅 결과를 저장합니다.

    tagged_words = []
    
  5. 입력 파일에서 단어를 읽고, 형태소 분석을 수행합니다.

    with open(filtered_input_file, 'r', encoding='utf-8') as infile:
         for line in infile:
              word_list = line.strip().split()
              tagged_line = []
    
              for word in word_list:
                parsed_word = morph.parse(word)[0]
                tagged_line.append(f"{word}/{parsed_word.tag}")
                tagged_words.append(' '.join(tagged_line)) 
    

    filtered_input_file에서 텍스트 파일을 읽어들인 후, 각 줄을 line.strip()으로 양쪽 공백을 제거하고, split()으로 공백을 기준으로 단어를 분리하여 word_list에 저장합니다. 그런 다음, 각 단어에 대해 morph.parse(word)를 사용하여 형태소 분석을 수행합니다. parsed_word.tag는 해당 단어에 대한 품사 태그를 반환합니다. 예를 들어, "кот"라는 단어에 대해 "NOUN"(명사)와 같은 태그를 반환할 수 있습니다. tagged_line.append(f"{word}/{parsed_word.tag}")는 각 단어와 그에 해당하는 품사 태그를 문자열 형식으로 저장합니다. (예: "word/NOUN") 이제 태깅된 단어들을 문자열로 결합합니다. 한 줄에 대한 모든 단어와 태그를 공백으로 구분하여 하나의 문자열로 결합합니다.

  6. 형태소 태깅된 결과를 저장합니다.

    with open(tagged_output_file, 'w', encoding='utf-8') as tagged_file:
         for tagged_line in tagged_words:
              tagged_file.write(tagged_line + '\\n')
    
  7. 결과 파일의 첫 10줄을 출력해 보겠습니다.

    print("\\n형태소 태깅 결과의 첫 10줄:")
    with open(tagged_output_file, 'r', encoding='utf-8') as f:
         for _ in range(10):
              print(f.readline().strip())
    

    readline().strip()을 사용하여 각 줄을 읽고, 양쪽 공백을 제거한 후 출력합니다.

  8. 지금까지의 과정을 모두 포함하면 다음과 같이 코드가 완성됩니다.

    !pip install pymorphy2
    import pymorphy2
    
    filtered_input_file = 'filtered_lemmatized_words.txt'
    tagged_output_file = 'tagged_words.txt'
    
    morph = pymorphy2.MorphAnalyzer()
    
    tagged_words = []
    
    with open(filtered_input_file, 'r', encoding='utf-8') as infile:
         for line in infile:
              word_list = line.strip().split()
              tagged_line = []
    
              for word in word_list:
                parsed_word = morph.parse(word)[0]
                tagged_line.append(f"{word}/{parsed_word.tag}")
                tagged_words.append(' '.join(tagged_line)) 
    
    with open(tagged_output_file, 'w', encoding='utf-8') as tagged_file:
         for tagged_line in tagged_words:
              tagged_file.write(tagged_line + '\\n')
    
    print("\\n형태소 태깅 결과의 첫 10줄:")
    with open(tagged_output_file, 'r', encoding='utf-8') as f:
         for _ in range(10):
              print(f.readline().strip())
    
  9. 화살표 버튼을 클릭하여 셀을 실행합니다.

    다음과 같이 출력됩니다.

    image19.png

    형태소 분석 작업이 끝났습니다. tagged_words.txt 파일이 자동 저장됩니다.

    image20.png

    tagged_words.txt 를 더블클릭하여 형태소 분석 결과를 확인해 봅시다.

    image21.png

    러시아어 문법소 목록은 아래 링크를 참조하세요.