N - Gram 모델 로 데이터 요약 (Python 설명)

Python 2.7 IDE PyCharm 5.0.3
        ,              。。

처음부터 말 하 다
                 ,     ,  ,   。        。

N - Gram 모델 이 뭐 예요?
자연 언어 에는 n - gram 이라는 모델 이 있 는데 문자 나 언어 중의 n 개의 연속 적 인 단어 구성 서열 을 나타 낸다.자연 언어 분석 을 할 때 n - gram 을 사용 하거나 상용 어 구 를 찾 으 면 한 마디 를 여러 개의 문자 부분 으로 쉽게 분해 할 수 있다.파 이 썬 네트워크 데이터 수집 에서 따 온 [Ryan Mitchell 저]
쉽게 말 하면 핵심 주제 어 를 찾 는 것 이다. 그렇다면 핵심 주제 어 는 무엇 일 까? 일반적으로 중복 율 은 언급 횟수 가 가장 많은 것, 즉 가장 표현 해 야 할 것 이 핵심 단어 다.아래 의 예 는 바로 이것 부터 펼 쳐 집 니 다.
임시 보충
밤 에 나타 나 면 여기 서 꺼 내 서 단독으로 먼저 효 과 를 시험 해 보 세 요.
1. string. punctuation 모든 문장 부 호 를 가 져 와 strip 와 조합 하여 사용 합 니 다.
import string
list = ['a,','b!','cj!/n']
item=[]
for i in list:
    i =i.strip(string.punctuation)
    item.append(i)
print item
['a', 'b', 'cj!/n']

2. operator. itemgetter () operator 모듈 에서 제공 하 는 itemgetter 함 수 는 대상 의 어떤 차원 의 데 이 터 를 가 져 오 는 데 사 용 됩 니까? 매개 변 수 는 일부 번호 (즉, 가 져 올 데이터 가 대상 에 있 는 번호) 입 니 다.
밤.
import operator
dict_={'name1':'2',
      'name2':'1'}

print sorted(dict_.items(),key=operator.itemgetter(0),reverse=True)
#dict_.items(),   
[('name2', '1'), ('name1', '2')]

물론 이 걸 직접 사용 하 셔 도 됩 니 다.
dict_={'name1':'2',
      'name2':'1'}
print sorted(dict_.iteritems(),key=lambda x:x[1],reverse=True)

2-gram
두 가지 키워드 로 말씀 드 리 겠 습 니 다. 지난 밤 에 설명 을 드 리 겠 습 니 다.
import urllib2
import re
import string
import operator

def cleanText(input):
    input = re.sub('
+'
, " ", input).lower() # , input = re.sub('\[[0-9]*\]', "", input) # [1] input = re.sub(' +', " ", input) # input = bytes(input)#.encode('utf-8') # utf-8 #input = input.decode("ascii", "ignore") return input def cleanInput(input): input = cleanText(input) cleanInput = [] input = input.split(' ') # , for item in input: item = item.strip(string.punctuation) # string.punctuation if len(item) > 1 or (item.lower() == 'a' or item.lower() == 'i'): # , i,a cleanInput.append(item) return cleanInput def getNgrams(input, n): input = cleanInput(input) output = {} # for i in range(len(input)-n+1): ngramTemp = " ".join(input[i:i+n])#.encode('utf-8') if ngramTemp not in output: # output[ngramTemp] = 0 # output[ngramTemp] += 1 return output # : content = urllib2.urlopen(urllib2.Request("http://pythonscraping.com/files/inaugurationSpeech.txt")).read() # : , , #content = open("1.txt").read() ngrams = getNgrams(content, 2) sortedNGrams = sorted(ngrams.items(), key = operator.itemgetter(1), reverse=True) #=True print(sortedNGrams)
[('of the', 213), ('in the', 65), ('to the', 61), ('by the', 41), ('the constitution', 34),,,      

위 와 같은 밤 작용 은 2 접속사 의 주파수 크기 를 잡 아 정렬 하 는 것 이다. 그러나 이것 은 우리 가 원 하 는 것 이 아니다. 200 여 번 의 of the 가 나타 나 면 고양이 가 사용 하 는 것 이 라 고 말 했다. 그래서 우 리 는 이 접속사 와 전치사 에 대한 제거 작업 을 해 야 한다.
Deeper
# -*- coding: utf-8 -*-
import urllib2

import re
import string
import operator

#       
def isCommon(ngram):
    commonWords = ["the", "be", "and", "of", "a", "in", "to", "have",
                   "it", "i", "that", "for", "you", "he", "with", "on", "do", "say",
                   "this", "they", "is", "an", "at", "but","we", "his", "from", "that",
                   "not", "by", "she", "or", "as", "what", "go", "their","can", "who",
                   "get", "if", "would", "her", "all", "my", "make", "about", "know",
                   "will","as", "up", "one", "time", "has", "been", "there", "year", "so",
                   "think", "when", "which", "them", "some", "me", "people", "take", "out",
                   "into", "just", "see", "him", "your", "come", "could", "now", "than",
                   "like", "other", "how", "then", "its", "our", "two", "more", "these",
                   "want", "way", "look", "first", "also", "new", "because", "day", "more",
                   "use", "no", "man", "find", "here", "thing", "give", "many", "well"]

    if ngram in commonWords:
        return True
    else:
        return False

def cleanText(input):
    input = re.sub('
+'
, " ", input).lower() # input = re.sub('\[[0-9]*\]', "", input) # [1] input = re.sub(' +', " ", input) # input = bytes(input)#.encode('utf-8') # utf-8 #input = input.decode("ascii", "ignore") return input def cleanInput(input): input = cleanText(input) cleanInput = [] input = input.split(' ') # , for item in input: item = item.strip(string.punctuation) # string.punctuation if len(item) > 1 or (item.lower() == 'a' or item.lower() == 'i'): # , i,a cleanInput.append(item) return cleanInput def getNgrams(input, n): input = cleanInput(input) output = {} # for i in range(len(input)-n+1): ngramTemp = " ".join(input[i:i+n])#.encode('utf-8') if isCommon(ngramTemp.split()[0]) or isCommon(ngramTemp.split()[1]): pass else: if ngramTemp not in output: # output[ngramTemp] = 0 # output[ngramTemp] += 1 return output # def getFirstSentenceContaining(ngram, content): #print(ngram) sentences = content.split(".") for sentence in sentences: if ngram in sentence: return sentence return "" # : content = urllib2.urlopen(urllib2.Request("http://pythonscraping.com/files/inaugurationSpeech.txt")).read() # , , #content = open("1.txt").read() ngrams = getNgrams(content, 2) sortedNGrams = sorted(ngrams.items(), key = operator.itemgetter(1), reverse=True) # reverse=True print(sortedNGrams) for top3 in range(3): print "###"+getFirstSentenceContaining(sortedNGrams[top3][0],content.lower())+"###"
[('united states', 10), ('general government', 4), ('executive department', 4), ('legisltive bojefferson', 3), ('same causes', 3), ('called upon', 3), ('chief magistrate', 3), ('whole country', 3), ('government should', 3),,,,      

### the constitution of the united states is the instrument containing this grant of power to the several departments composing the government###
### the general government has seized upon none of the reserved rights of the states###
### such a one was afforded by the executive department constituted by the constitution###

상술 한 밤 을 통 해 알 수 있 듯 이 우 리 는 유용 한 단 어 를 삭제 하고 연결 어 를 제거 한 다음 에 핵심 어 를 포함 하 는 문장 을 잡 아 냈 다. 여기 서 나 는 앞의 세 마디 만 잡 았 을 뿐 이 고 200 개의 문장 이 있 는 문장 에 대해 서 는 서 너 마디 로 개괄 하 는 것 이 신기 하 다 고 생각한다.
BUT
상술 한 방법 은 취지 가 매우 명확 한 회의 등에 국한 된다. 그렇지 않 으 면 소설 에 대해 정말 끔찍 하 다. 나 는 여러 개의 영어 소설 을 시험 해 보 았 는데 정말, 총 결 된 것 은 무엇 입 니까?
마지막.
자 료 는 Python 네트워크 데이터 수집 8 장 에서 나 왔 지만 코드 는 python 3. x 이 고 일부 코드 사례 에서 빠 져 나 오지 못 하기 때문에 정리 하고 코드 세 션 을 수정 해서 책의 효 과 를 냈 습 니 다.
사 의 를 표 하 다
Python 네트워크 데이터 수집 [Ryan Mitchell 저] [인민 우편 출판사] python strip () 함수 소개 Python 의 sorted 함수 및 operator. itemgeter 함수

좋은 웹페이지 즐겨찾기