2016-12-20 1 views
0

문서를 읽고 에세이와 같이 개선하는 방법에 대한 피드백을 제공하고자하는 프로그램을 만들고 싶습니다. 지금까지 필자는 에세이를 소개, 개발 단락 및 결론과 같은 주요 구성 요소로 분리했습니다. 어떻게 사용자가 그것을 향상시킬 수 있도록 각 단락에 대한 피드백을 줄 수있는 프로그램을 만들 수 있습니까? 이러한 유형의 프로그램이 가능한가 또는 기술이 충분히 발전하지 못했는가? 기계 학습이 최고의 기술이 될 것입니다. 코드는 지금까지 많이는 아니지만 여기있다 :파이썬에서 텍스트 피드백 생성기

import nltk 

def parse_essay(essay_filename): 
    with open(essay_filename, 'r') as file: 
     paragraphs = [x.strip('\n') for x in file.readlines() if x != '\n' and x != '\t\n'] 
     return paragraphs[0], paragraphs[1], paragraphs[2], paragraphs[3] 

def get_introduction_feedback(text): 
    sentences = nltk.tokenize.sent_tokenize(text) 
    hook = ' '.join(sentences[:3]) 
    thesis = sentences[3] 
    arguments = ' '.join(sentences[4:]) 

def get_development_feedback(text): 
    pass 

def get_conclusion_feedback(text): 
    pass 

if __name__ == '__main__': 
    ESSAY = 'essay.txt' 

    intro, dev1, dev2, conclusion = parse_essay(ESSAY) 
    intro_feedback = get_introduction_feedback(intro) 
    dev1_feedback = get_development_feedback(dev1) 
    dev2_feedback = get_development_feedback(dev2) 
    conclusion_feedback = get_conclusion_feedback(conclusion) 

    print('Introduction:\n\n{}\n\nDevelopment 1:\n\n{}\n\nDevelopment 2:\n\n{}\n\nConclusion:\n\n{}'.format(intro_feedback, dev1_feedback, dev2_feedback, conclusion_feedback)) 

또한이 사용하는 에세이 문서는 제 1 항은 인트로, 제 2 항 및 3가 개발하고 4는 결론이다 4 단락 에세이입니다 .

+0

기계 학습 없이는 실제로 이것을 할 수 없습니다. –

+0

기계 학습에 대해 잘 모르는 사람에게는 이것이 좋은 첫 걸음입니다. https://www.youtube.com/watch?v=cKxRvEZd3Mw&list=PLpH1NIoV8S8cxpmPlxVRr-RvnR2MBZ5gY –

+0

기계 학습에 대해서는 알고 있지만 여기서는 구현 방법을 잘 모르겠습니다. 어떤 종류의 알고리즘을 사용해야합니까? @EmettSpeer –

답변

0

일반적인 기계 학습으로 태클하는 것은 매우 어려운 문제입니다. 에세이는 매우 특정한 도메인 일 것이고 매우 광범위한 (그리고 분류 된) 에세이 데이터베이스가 필요할 것입니다.

인공 신경망을 통한 Word-embedding과 같은 Unsupervied 접근 방식이 유용 할 수 있습니다.

가장 먼저 생각해야 할 것은 "어떤 문제를 해결하려고합니까?"입니다. 또는 "나는 어떤 질문을하려고합니까?" 그런 다음 ML을 사용하여 최적화 할 목적 함수를 정의 할 수 있습니다. 그렇지 않은 경우 해당 질문에 대답하려고 할 때 또 다른 패러다임을 사용할 수 있습니다.

+0

이와 같은 복잡한 알고리즘의 구조는 어떻게됩니까? 이것의 오픈 소스 버전이 있습니까? @GermainL –

+0

"Bag-of-words"를 사용하여 입력 텍스트를 이진 벡터로 변환해야합니다. 이진 벡터는 "에세이에서 주어진 단어입니까?"라는 질문을 나타내는 1과 0의 묶음 일뿐입니다. 그런 다음 바이너리 벡터를 사용하여 에세이가 얼마나 좋은지 "예측"하거나 "순위 지정"합니다. 이는 어려운 질문입니다. 에세이가 양호한 지 여부를 어떻게 프로그래밍 방식으로 알 수 있습니까? 주문이나 단어를 고려하지 않으므로 가장 간단한 방법입니다. 규칙 기반 접근 방식을 고수해야 할 수도 있습니다. 마찬가지로, 특정 단어가 특정 순서로 언급된다면, 그 단어의 좋은, –