코퍼스 리더 및 맞춤형 코포 라
말뭉치 란 무엇입니까?
말뭉치는 자연스러운 의사 소통 환경에서 생성 된 기계 판독 가능 텍스트의 구조화 된 형식의 대규모 모음입니다. Corpora라는 단어는 Corpus의 복수형입니다. 코퍼스는 다음과 같이 여러 가지 방법으로 파생 될 수 있습니다.
- 원래 전자적 텍스트에서
- 구어 기록에서
- 광학 문자 인식 등에서
코퍼스 대표성, 코퍼스 균형, 샘플링, 코퍼스 크기는 코퍼스를 설계하는 데 중요한 역할을하는 요소입니다. NLP 작업에 가장 많이 사용되는 코퍼스 중 일부는 TreeBank, PropBank, VarbNet 및 WordNet입니다.
맞춤형 말뭉치를 구축하는 방법은 무엇입니까?
NLTK를 다운로드하는 동안 NLTK 데이터 패키지도 설치했습니다. 따라서 이미 컴퓨터에 NLTK 데이터 패키지가 설치되어 있습니다. Windows에 대해 이야기하면이 데이터 패키지가 다음 위치에 설치되어 있다고 가정합니다.C:\natural_language_toolkit_data Linux, Unix 및 Mac OS X에 대해 이야기하면이 데이터 패키지가 다음 위치에 설치되어 있다고 가정합니다. /usr/share/natural_language_toolkit_data.
다음 Python 레시피에서는 NLTK에서 정의한 경로 중 하나 내에 있어야하는 사용자 지정 말뭉치를 만들 것입니다. NLTK에서 찾을 수 있기 때문입니다. 공식 NLTK 데이터 패키지와의 충돌을 피하기 위해 홈 디렉토리에 사용자 정의 natural_language_toolkit_data 디렉토리를 생성하겠습니다.
import os, os.path
path = os.path.expanduser('~/natural_language_toolkit_data')
if not os.path.exists(path):
os.mkdir(path)
os.path.exists(path)
산출
True
이제 홈 디렉토리에 natural_language_toolkit_data 디렉토리가 있는지 확인하겠습니다.
import nltk.data
path in nltk.data.path
산출
True
True 출력을 얻었으므로 nltk_data 우리 홈 디렉토리의 디렉토리.
이제 우리는 단어 목록 파일을 만들 것입니다. wordfile.txt corpus라는 폴더에 넣습니다. nltk_data 예배 규칙서 (~/nltk_data/corpus/wordfile.txt) 다음을 사용하여로드합니다. nltk.data.load −
import nltk.data
nltk.data.load(‘corpus/wordfile.txt’, format = ‘raw’)
산출
b’tutorialspoint\n’
코퍼스 독자
NLTK는 다양한 CorpusReader 클래스를 제공합니다. 다음 파이썬 레시피에서 다룰 것입니다.
단어 목록 말뭉치 만들기
NLTK는 WordListCorpusReader단어 목록이 포함 된 파일에 대한 액세스를 제공하는 클래스입니다. 다음 Python 레시피의 경우 CSV 또는 일반 텍스트 파일이 될 수있는 단어 목록 파일을 만들어야합니다. 예를 들어 다음 데이터를 포함하는 'list'라는 파일을 만들었습니다.
tutorialspoint
Online
Free
Tutorials
이제 인스턴스화하겠습니다. WordListCorpusReader 생성 된 파일에서 단어 목록을 생성하는 클래스 ‘list’.
from nltk.corpus.reader import WordListCorpusReader
reader_corpus = WordListCorpusReader('.', ['list'])
reader_corpus.words()
산출
['tutorialspoint', 'Online', 'Free', 'Tutorials']
POS 태그 단어 말뭉치 생성
NLTK는 TaggedCorpusReader클래스의 도움으로 POS 태그가 붙은 단어 말뭉치를 만들 수 있습니다. 실제로 POS 태깅은 단어의 품사 태그를 식별하는 프로세스입니다.
태그가있는 말뭉치를위한 가장 간단한 형식 중 하나는 갈색 말뭉치에서 발췌 한 다음과 같은 '단어 / 태그'형식입니다.
The/at-tl expense/nn and/cc time/nn involved/vbn are/ber
astronomical/jj ./.
위의 발췌 부분에서 각 단어에는 POS를 나타내는 태그가 있습니다. 예를 들면vb 동사를 의미합니다.
이제 인스턴스화하겠습니다. TaggedCorpusReaderPOS 태그가 붙은 단어를 생성하는 클래스는 파일을 형성합니다. ‘list.pos’, 위의 발췌가 있습니다.
from nltk.corpus.reader import TaggedCorpusReader
reader_corpus = TaggedCorpusReader('.', r'.*\.pos')
reader_corpus.tagged_words()
산출
[('The', 'AT-TL'), ('expense', 'NN'), ('and', 'CC'), ...]
청크 구문 말뭉치 만들기
NLTK는 ChnkedCorpusReader클래스의 도움으로 청크 구문 말뭉치를 만들 수 있습니다. 사실 청크는 문장의 짧은 문구입니다.
예를 들어, 태그에서 발췌 한 다음은 treebank 말뭉치 −
[Earlier/JJR staff-reduction/NN moves/NNS] have/VBP trimmed/VBN about/
IN [300/CD jobs/NNS] ,/, [the/DT spokesman/NN] said/VBD ./.
위의 발췌에서 모든 청크는 명사구이지만 괄호 안에 있지 않은 단어는 명사구 하위 트리의 일부가 아니라 문장 트리의 일부입니다.
이제 인스턴스화하겠습니다. ChunkedCorpusReader 파일에서 청크 구문을 생성하는 클래스 ‘list.chunk’, 위의 발췌가 있습니다.
from nltk.corpus.reader import ChunkedCorpusReader
reader_corpus = TaggedCorpusReader('.', r'.*\.chunk')
reader_corpus.chunked_words()
산출
[
Tree('NP', [('Earlier', 'JJR'), ('staff-reduction', 'NN'), ('moves', 'NNS')]),
('have', 'VBP'), ...
]
분류 된 텍스트 말뭉치 만들기
NLTK는 CategorizedPlaintextCorpusReader분류 된 텍스트 코퍼스를 생성 할 수있는 클래스. 텍스트의 큰 코퍼스가 있고이를 별도의 섹션으로 분류하려는 경우에 매우 유용합니다.
예를 들어, 갈색 말뭉치에는 여러 가지 범주가 있습니다. 다음 Python 코드의 도움으로 그들을 찾아 보자.
from nltk.corpus import brown^M
brown.categories()
산출
[
'adventure', 'belles_lettres', 'editorial', 'fiction', 'government',
'hobbies', 'humor', 'learned', 'lore', 'mystery', 'news', 'religion',
'reviews', 'romance', 'science_fiction'
]
말뭉치를 분류하는 가장 쉬운 방법 중 하나는 모든 범주에 대해 하나의 파일을 갖는 것입니다. 예를 들어, 다음에서 발췌 한 두 가지를 살펴 보겠습니다.movie_reviews 말뭉치 −
movie_pos.txt
얇은 빨간 선은 결함이 있지만 자극합니다.
movie_neg.txt
큰 예산과 광택있는 제작은 TV 쇼에 스며드는 자발성의 부족을 보충 할 수 없습니다.
따라서 위의 두 파일에서 두 가지 범주가 있습니다. pos 과 neg.
이제 인스턴스화하겠습니다. CategorizedPlaintextCorpusReader 수업.
from nltk.corpus.reader import CategorizedPlaintextCorpusReader
reader_corpus = CategorizedPlaintextCorpusReader('.', r'movie_.*\.txt',
cat_pattern = r'movie_(\w+)\.txt')
reader_corpus.categories()
reader_corpus.fileids(categories = [‘neg’])
reader_corpus.fileids(categories = [‘pos’])
산출
['neg', 'pos']
['movie_neg.txt']
['movie_pos.txt']