[파이썬] n-그램 생성기: 인접하는 단어 조합 생성기

반응형
    반응형

    1. 명칭

    n-그램 생성기

     

    2. 기능 

    자연어 처리에서 주로 사용되는 도구로, 입력된 텍스트에서 n개의 연속된 단어 또는 항목을 생성합니다. 이 경우의 n-그램은 단어에 기반하며, 'n'은 연속적인 단어의 개수를 의미합니다. n은 1부터 시작하여 입력 텍스트에 있는 단어의 총 개수까지 가능합니다.

    이 프로그램은 주어진 문자열(이 경우에는 한 문장)을 받아서, 그 안에 있는 모든 가능한 연속된 단어의 조합들을 출력합니다. 이 조합들은 해당 문자열에서 발견할 수 있는 모든 n-그램을 포함합니다.

     

    3. 예시

    예를 들어, "아버지가 방에 들어가신다"는 문자열에 대해 이 프로그램을 실행하면, 다음과 같은 결과를 얻을 수 있습니다: ['아버지가', '방에', '들어가신다', '아버지가 방에', '방에 들어가신다', '아버지가 방에 들어가신다'].

     

    4. 프로그램(파이썬)

    # n-그램을 생성하는 함수를 정의합니다.
    def generate_ngrams(s, n):
        # 입력 문자열을 공백 기준으로 분할하여 단어 목록을 생성합니다.
        words = s.split(' ')
        # n개의 연속된 단어로 이루어진 모든 n-그램을 생성하고 반환합니다.
        # words[i:i+n]은 words 리스트의 i번째 위치부터 시작하여 n개의 연속된 요소를 선택합니다.
        # 이 요소들을 공백으로 결합하여 n-그램을 생성합니다.
        # 이 작업은 words 리스트의 끝에 도달할 때까지 반복됩니다.
        return [' '.join(words[i:i+n]) for i in range(len(words)-n+1)]
    
    # 모든 가능한 n-그램을 생성하는 함수를 정의합니다.
    def generate_all_ngrams(s):
        # 입력 문자열을 공백 기준으로 분할하여 단어 목록을 생성합니다.
        words = s.split(' ')
        # 모든 가능한 n-그램을 저장할 리스트를 초기화합니다.
        all_ngrams = []
        # 1-그램부터 words 리스트의 길이만큼의 n-그램까지 순회하면서 n-그램을 생성합니다.
        for n in range(1, len(words) + 1):
            # generate_ngrams 함수를 호출하여 n-그램을 생성하고,
            # 이 n-그램들을 all_ngrams 리스트에 추가합니다.
            ngrams = generate_ngrams(s, n)
            all_ngrams.extend(ngrams)
        # 생성된 모든 n-그램을 반환합니다.
        return all_ngrams
    
    # 테스트할 문자열을 정의합니다.
    s = "산으로 간 고등어"
    # generate_all_ngrams 함수를 호출하여 모든 가능한 n-그램을 생성하고 출력합니다.
    print(generate_all_ngrams(s))
    반응형

    댓글

    Designed by JB FACTORY