중국어/영문 텍스트 발굴 예처리 프로세스 총결

7971 단어 NLP
중국어와 영문 텍스트 발굴의 특징
첫째, 중국어 텍스트는 영어의 단어 빈칸처럼 분리되지 않기 때문에 영어처럼 가장 간단한 빈칸과 문장부호로 단어를 완성할 수 없다.그래서 일반적으로 우리는 분사 알고리즘으로 분사를 완성해야 한다. 텍스트가 발굴한 분사 원리에서 우리는 중국어의 분사 원리를 말했기 때문에 여기서 더 이상 말하지 않는다.
둘째, 중국어의 인코딩은utf8이 아니라 유니버설이다.이렇게 하면 단어를 나눌 때 영어에 비해 우리는 인코딩 문제를 처리해야 한다.
1 중국어 텍스트 발굴 사전 처리 프로세스
1.1 데이터 수집
텍스트를 발굴하기 전에 우리는 텍스트 데이터를 얻어야 한다. 텍스트 데이터의 획득 방법은 일반적으로 두 가지가 있다. 다른 사람이 만든 자료 라이브러리와 자신이 파충류로 인터넷에서 자신의 자료 데이터를 기어오르는 것이다.
첫 번째 방법에 대해 자주 사용하는 텍스트 자료 라이브러리는 인터넷에 매우 많다. 만약에 사람들이 공부만 한다면 직접 다운로드해서 사용할 수 있지만 특정한 주제의 자료 라이브러리, 예를 들어'기계 학습'과 관련된 자료 라이브러리라면 이런 방법은 통하지 않기 때문에 우리 스스로 두 번째 방법으로 얻어야 한다.
두 번째 파충류를 사용하는 방법에 대해 개원 도구가 매우 많은데 통용되는 파충류는 일반적으로beautifulsoup을 사용한다.그러나 우리는 위에서 언급한'기계학습'과 관련된 자료 라이브러리를 필요로 하는데 주제 파충류(초점 파충류라고도 부른다)로 완성해야 한다.일반적으로ache를 사용합니다.ache는 키워드나 분류 알고리즘으로 우리가 필요로 하는 주제 자료를 필터할 수 있도록 해 줍니다. 비교적 강력합니다.
1.2 데이터의 비텍스트 부분 제거
이 단계는 주로 우리가 파충류로 수집한 어료 데이터에 대한 것이다. 기어오르는 내용에 html의 라벨이 많기 때문에 제거해야 한다.소량의 비 텍스트 내용은 파이톤의 정규 표현식 (re) 으로 삭제할 수 있고, 복잡한 것은 beautifulsoup으로 제거할 수 있다.이러한 텍스트가 아닌 내용을 제거하면 우리는 진정한 텍스트를 미리 처리할 수 있다.
1.3 중국어 인코딩 문제 처리
파이톤2는 유니버설 처리를 지원하지 않기 때문에 파이톤2를 사용하여 중국어 텍스트를 미리 처리할 때 지켜야 할 원칙은 데이터를 저장할 때utf8을 사용하고 중국어 관련 처리를 읽을 때 GBK와 같은 중국어 인코딩을 사용하는 것이다.
import jieba

for i in range(3):
    with open('./doc%d.txt'%(i+1), 'r', encoding="utf-8") as f1:
        document = f1.read()
        document_cut = jieba.cut(document)
        result = ' '.join(document_cut)
        print(result)
        f1.close()
        with open('./result%d.txt'%(i+1), 'w', encoding="utf-8") as f2:
            f2.write(result)
            f2.close()

or
import jieba

with open('./nlp_test0.txt') as f:
    document = f.read()
    
    document_decode = document.decode('GBK')
    document_cut = jieba.cut(document_decode)
    #print  ' '.join(jieba_cut)  //      ,       ,   result    
    result = ' '.join(document_cut)
    result = result.encode('utf-8')
    with open('./nlp_test1.txt', 'w') as f2:
        f2.write(result)
f.close()
f2.close()

1.4 중국어 분사
자주 사용하는 중국어 분사 소프트웨어가 매우 많기 때문에 개인적으로는 더듬는 분사를 비교적 추천합니다.설치도 간단하다. 예를 들어 파이썬 기반의 경우'pip install jieba'로 완성할 수 있다.
1.5 정지어 도입
위에서 우리가 해석한 텍스트에는 무효한 단어가 많다. 예를 들어'착','화', 그리고 문장부호도 있다. 이런 것들은 우리가 텍스트 분석을 할 때 도입하고 싶지 않기 때문에 빼야 한다. 이런 단어는 바로 정지어이다.정지어가 자원에 올라왔어요.
with open('./ChineseStopWords.txt', 'r', encoding="utf-8") as f:
    line = f.read()
    line = line.split('","')
    f.close()

file_object = open('./stopwords.txt', 'w', encoding="utf-8")
for i in range(len(line)):
    file_object.write(line[i] + '
') file_object.close() with open('./stopwords.txt', 'r', encoding="utf-8") as f: lines = f.readlines() f.close() stopwords = [] for l in lines: stopwords.append(l.strip()) print(stopwords)

1.6 특징 처리
이제 우리는 scikit-learn으로 우리의 텍스트 특징을 처리할 수 있다. 텍스트 발굴 예처리의 양적화와HashTrick에서 우리는 두 가지 특징 처리 방법, 양적화와HashTrick에 대해 이야기했다.그리고 벡터는 TF-IDF의 피쳐 처리를 이어갈 수 있기 때문에 가장 일반적인 방법입니다.텍스트 발굴 예처리의 TF-IDF에서 우리는 TF-IDF 특징 처리 방법을 이야기했다.여기에서 우리는 scikit-learn의 TfidfVectorizer 클래스로 TF-IDF 특징 처리를 진행한다.
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [res1,res2]
vector = TfidfVectorizer(stop_words=stpwrdlst)
tfidf = vector.fit_transform(corpus)
print(tfidf)

1.7 분석 모델 구축
각 텍스트의 TF-IDF의 특징 벡터가 있으면 우리는 이러한 데이터를 이용하여 분류 모델을 구축하거나 분류 모델을 구축하거나 주제 모델의 분석을 할 수 있다.예를 들어 우리 위의 두 단락의 텍스트는 두 개의 훈련 견본이 될 수 있다.이때의 분류 분류 분류 모델은 이전에 말한 비자연적 언어 처리의 데이터 분석과 다름없다.
2 영문 텍스트 발굴 예처리 프로세스
2.1 데이터 수집
이 부분은 영어와 중국어가 유사하다.획득 방법은 일반적으로 두 가지가 있는데 그것이 바로 다른 사람이 만든 자료 라이브러리와 자신이 파충류로 인터넷에서 자신의 자료 데이터를 기어오르는 것이다.
첫 번째 방법에 대해 자주 사용하는 텍스트 자료 라이브러리는 인터넷에 매우 많다. 만약에 사람들이 공부만 한다면 직접 다운로드해서 사용할 수 있지만 특정한 주제의 자료 라이브러리, 예를 들어'deep learning'과 관련된 자료 라이브러리라면 이런 방법은 통하지 않는다. 우리는 두 번째 방법으로 얻어야 한다.
두 번째 파충류를 사용하는 방법에 대해 개원 도구가 매우 많은데 통용되는 파충류는 일반적으로beautifulsoup을 사용한다.그러나 우리는 위에서 언급한'deep learning'과 관련된 자료 라이브러리를 필요로 하는데 주제 파충류(초점 파충류라고도 부른다)로 완성해야 한다.일반적으로ache를 사용합니다.ache는 키워드나 분류 알고리즘 모델로 우리가 필요로 하는 주제 자료를 필터할 수 있도록 합니다. 비교적 강력합니다.
2.2 데이터의 비텍스트 부분 제거
이 단계는 주로 우리가 파충류로 수집한 어료 데이터에 대한 것이다. 기어오르는 내용에 html의 라벨이 많기 때문에 제거해야 한다.소량의 비 텍스트 내용은 파이톤의 정규 표현식 (re) 으로 삭제할 수 있고, 복잡한 것은 beautifulsoup으로 제거할 수 있다.또 일부 특수한 비영문 문자(non-alpha)도 있고 파이톤의 정규 표현식(re)으로 삭제할 수 있다.
2.3 맞춤법 검사 수정
영문 텍스트에 맞춤법 오류가 있을 수 있기 때문에 일반적으로 맞춤법 검사를 해야 한다.만약 우리가 분석한 텍스트에 맞춤법 문제가 없다고 확신한다면, 이 단계를 생략할 수 있습니다.
맞춤법 검사는 보통pyenchant 라이브러리로 끝냅니다.pyenchant의 설치는 매우 간단합니다: "pip install pyenchant"를 누르면 됩니다.
from enchant.checker import SpellChecker
chkr = SpellChecker("en_US")
chkr.set_text("Many peope likee to watch In the Name of People.")
for err in chkr:
	print ("ERROR:", err.word)

출력:
ERROR: peope ERROR: likee
잘못을 찾아낸 후, 우리는 스스로 고칠지 말지를 결정할 수 있다.물론, 우리는pyenchant의 wxSpellCheckerDialog 클래스로 대화 상자의 형식으로 무시하거나, 수정하거나, 텍스트의 잘못된 맞춤법을 모두 수정할 수 있습니다.여러분이 관심이 있으시다면pyenchant의 공식 문서를 연구해 보십시오.
2.4 어간 추출(stemming)과 어형 복원(lemmatization)
어간 추출(stemming)과 어형 복원(lemmatization)은 영문 텍스트를 미리 처리하는 특색이다.양자는 사실 공통점이 있다. 즉, 모두 단어의 원시 형식을 찾아야 한다는 것이다.다만 **어간 추출(stemming)은 더욱 급진적이며 어간을 찾을 때 단어가 아닌 어간을 얻을 수 있다.예를 들어'imaging'의 어간에서 얻을 수 있는 것은'imag'이지 한 단어가 아니다.어형은 원칙적으로 보수적이며 일반적으로 하나의 정확한 단어로 환원할 수 있는 단어만 처리한다.**개인은 어간 추출이 아닌 어형 환원을 사용하는 것을 비교적 좋아한다.
실제 응용에서 일반적으로 nltk를 사용하여 어간 추출과 어형 환원을 진행한다.nltk를 설치하는 것도 간단합니다. "pip install nltk"를 사용하면 됩니다.단지 우리는 일반적으로 nltk의 자료 라이브러리를 다운로드해야 한다. 아래의 코드로 완성할 수 있고 nltk는 대화상자에서 다운로드할 내용을 선택할 수 있다.자료 라이브러리 다운로드를 선택하면 됩니다.
import nltk
nltk.download()

nltk에서 어간 추출 방법은PorterStemmer,LancasterStemmerSnowballStemmer가 있다.개인 추천 사용SnowballStemmer.이 종류는 많은 언어를 처리할 수 있다. 물론 중국어를 제외하고는.
from nltk.stem import SnowballStemmer
stemmer = SnowballStemmer("english") # Choose a language
stemmer.stem("countries") # Stem a word
   "countri",          。

만약에 어형 환원을 한다면 일반적으로 WordNetLemmatizer류, 즉wordnet 어형 환원 방법을 사용할 수 있다.
from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
print(wnl.lemmatize('countries'))  
   "country",      。

실제 영문 텍스트를 발굴하여 미리 처리할 때wordnet 기반의 어형 복원을 사용하면 된다.
2.5 소문자로 전환
영어 단어는 대소문자로 나뉘기 때문에, 우리는 통계할 때 '홈' 과 '홈' 처럼 하나의 단어가 되기를 기대한다.따라서 일반적으로 모든 단어를 소문자로 바꿔야 한다.이것은 바로python의 API로 해결할 수 있다.
texts = [x.lower() for x in texts]

2.6 정지어 도입
scikit-learn으로 특징 처리를 할 때 매개 변수 stopwords에서 정지 어휘표로 그룹을 도입합니다.
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [res1,res2]
vector = TfidfVectorizer(stop_words='english')
tfidf = vector.fit_transform(corpus)
from nltk.corpus import stopwords
stop_words = stopwords.words('english')

2.7 피쳐 처리
이제 우리는 scikit-learn으로 우리의 텍스트 특징을 처리할 수 있다. 텍스트 발굴 예처리의 양적화와HashTrick에서 우리는 두 가지 특징 처리 방법, 양적화와HashTrick에 대해 이야기했다.그리고 벡터는 TF-IDF의 피쳐 처리를 이어갈 수 있기 때문에 가장 일반적인 방법입니다.텍스트 발굴 예처리의 TF-IDF에서 우리는 TF-IDF 특징 처리 방법을 이야기했다.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import HashingVectorizer 
vectorizer2=HashingVectorizer(n_features = 6,norm = None)
print(vectorizer2.fit_transform(corpus))

2.8 분석 모델 구축
각 텍스트의 TF-IDF의 특징 벡터가 있으면 우리는 이러한 데이터를 이용하여 분류 모델을 구축하거나 분류 모델을 구축하거나 주제 모델의 분석을 할 수 있다.이때의 분류 분류 분류 모델은 이전에 말한 비자연적 언어 처리의 데이터 분석과 다름없다.

좋은 웹페이지 즐겨찾기