2013-10-29 3 views
0

[((고양이), (고양이와 함께), (함께, 모피)] [ (개 포함), (공,과) ....... 등] 라인의 문장과 텍스트 파일에서 같은 :목록에있는 파이썬 (NLTK 사용)

모피 \ n을 공을 강아지와 고양이 \ n

내가 겪어 본 문제는 파일에서 행을 읽는 동안 (튜토리얼) (가변 레이블)을 만들고 최종 목록 (가변 연결)을 만드는 것입니다. 빈 상황은 연결이 0으로 바뀌 었습니다. 실제로는 0b가 아닙니다. F 오픈으로 ('corpus.txt', 'R') : 목록이 프로그램의 일부에 대한 코드

[] [] []처럼 도시 유타

with open('corpus.txt', 'r') as f: 
    for line in f: 
     cnt = 0 
     sa = nltk.word_tokenize(line) 
     label[:] = [] 

     for i in sa: 
      words.append(i) 
      if cnt>0: 
       try: label +=[(prev , i)] 
       except: NameError 
      prev = i 
      cnt = cnt + 1 

     if label != []: 
      connection += [label] 
      print connection 

누군가 내 문제를 이해하기를 바란다. 나를 미치게 만들고, 시간이 없어. 나는 여기서 뭘 잘못하고 있는지 알고 싶기 때문에 이전에 저장 한 것을 잃지 않고 각 루프에서 연결 목록을 업데이트 할 수 있습니다. 당신의 도움에 대한

덕분에

+0

으로 모든 bigrams을 얻고, 각 문장마다 바이 그램 목록을 얻고 싶습니까? – inspectorG4dget

+0

정확하게, 바이그 램이라는 단어는 몰랐다. 그렇게 말하기 쉽다. 추신 : 실제로 나는 모든 파일의 바이 그램을 원하지만 [[((a1, a2), (a2, a3))], [(b1, b2), (b2, b3)] –

답변

1

나는 NLTK 설치, 그러나 이것은 당신을 위해 작동하는지 확인하지 않습니다

with open('corpus.txt', 'r') as f: 
    answer = [] 
    for line in f: 
     cnt = 0 
     sa = nltk.word_tokenize(line) 
     answer.append([tuple([char, sa[i+1]]) for i,char in enumerate(sa[:-1])]) 
+0

OMG 코딩 작업을 계속할 수있어서 고마워요. ... 10000 너에게 고마워! –

+0

@FranciscoArriagadaArroyo : LOL! 도와 줄 수있어서 기뻐. 나머지 프로그램들과 함께 행운을 빈다. – inspectorG4dget

0

당신은 경계 조건을 얻기에 대한 걱정없이 당신의 튜플을 얻을 nltk.bigrams을 사용할 수 있습니다 바로. words가 문장에서 단어의 목록입니다, 당신은 당신이 각 문장은 단어의 목록으로 표시됩니다 문장의 목록을 가지고 말을 안전 할 것인가

bigrams = nltk.bigrams(words)