2017-10-02 4 views
-2
내가 도움을 사용할 수 있습니다 &를 파이썬 새로운 오전

에서 추출 문장 : 나는 목록 내에서 반복되는 동일한 키 값 (사전을 가지고파이썬 단락

:

이것은 단지 샘플입니다

list_dummy = [{'a': 1, 'b':"The house is great. I loved it.",'e':"loved,the"}, {'a': 3, 'b': "Building is white in colour. I liked it.",'e':"colour"}, {'a': 5, 'b': "She is looking pretty. She is in my college",'e':"pretty"}] 

'b는'- 본문 'E'로 구성 - 단어로 구성 (수 있습니다 하나 이상) 나는 그 자체를 추출 할

'e'의 단어가 하나 이상 들어있는 'b'에서 제외됩니다.

먼저 텍스트를 sent_tokenize &으로 추출하여 문장으로 나눌 필요가 있습니다. Sent_tokenize는 문자열 만 입력으로받습니다. 진행 방법?

답변

0

그럼 난 NLTK 모듈을 테스트하기 위해 노력하지만, 얻을 수없는 것 한 sent_tokenize() 나는 (내가 제대로 이해한다면) 당신이 바라고있어 무엇을해야한다고 생각이 같은 문장 문자열 무언가의 목록을 반환과 같이

ans = [] 
for d in list_dummy: 
    tmp = sent_tokenize(d['b']) 
    s = [x for x in tmp if any(w.upper() in x.upper() for w in d['e'].split(","))] 
    ans += s 

여기서는 전자는 항상 쉼표로 구분 된 목록이며 대소 문자를 구별하지 않는 검색에 관심이 있다고 가정합니다. ans 변수는 사전의 'e'값의 단어가 포함 된 문장의 평면 목록 일뿐입니다.

편집

정규 표현식을 사용하려고 할 경우에는 다시 모듈을 사용할 수 있습니다 : 나는 (ANS) 인쇄하는 경우, 그것은 나를 준다 .. 코드가 작업을 doesnot

import re 
ans = [] 
for d in list_dummy: 
    b = sent_tokenize(d['b']) 
    e = d['e'].split(",") 
    rstring = ".*" + "|".join(e) + ".*" 
    r = re.compile(rstring) 
    ans.append([x for x in b if r.match(x)]) 
+0

를 : [ '이 집은 위대하다. ','나는 그것을 좋아했다. ','건물은 흰색이 좋다. ','나는 그것을 좋아했다. ','그녀는 예쁘다. ','그녀는 내 대학에있다 ']. 전체 문장 만 다시 돌려줍니다. – Deepti

+0

안녕 Deepti, 내가 처음 게시했을 때 실수했다고 생각합니다. 수정 된 코드가 문제를 해결합니까? –

+0

예, 이제 그 문장 만 제공합니다. 그러나 어떻게 문장을 분리 할 수 ​​있습니까? & nbsp; & nbsp; & quot; Excel로 내보내고 수동 태깅 태그를 추가해야합니다. 예를 들면. 첫 줄에있는 목록의 첫 번째 요소에 대해 추출 된 문장이나 문장이 필요합니다. 두 번째 요소는 두 번째 줄에서 문장을 추출했습니다. 위의 코드를 사용하면 둘 이상의 문장이있는 경우 위치가 변경됩니다. – Deepti