어떻게 신경 네트워크를 이용하여 해리 포터 마법을 생성합니까

몇 년 전, 나의 한 친구가 나에게 Harry Potter and the Portrait of what Looked Like a Large Pile of Ash가 창작한 개그Botnik를 보여준 후에 나는 기계 창작을 훈련하는 생각을 좋아하게 되었다.
그 이후로 저는 인터넷을 탐색하고 인공지능이 만들어낸 재미있고 이상하고 훌륭한 내용을 찾고 있습니다. 다음은 제가 지금까지 발견한 것들입니다.

  • Sunspring-오스카 샤프와 로스 구드윈의 공상 과학 단편.

  • Speedgate - 인공지능이 작성한 규칙의 운동.
  • 인공지능이 작성한 식단.이런 예가 많지만, 내가 가장 좋아하는 것은 보트닉이 창립하는 것이다.

  • 그 이후로 나는 자신을 조사하기로 결정했다. 이것은 아주 좋은 부업이 될 것이다.

    그럼, 당신은 어떻게 시작합니까?


    너는 이것이 복잡하고 긴 과정일 수도 있다고 생각할 수도 있지만, 나를 믿어라. 사실은 그렇지 않다.그의 파이썬 모듈textgenrnn과 놀라운 일을 도와준 덕분이다.Textgenrnn은 Keras/TensorFlow 위의 Python 3 모듈로 char-rnns를 만드는 데 사용됩니다. 이 말이 의미가 없다면 걱정하지 마세요. 신경 네트워크를 만들어서 제공한 모델에 따라 텍스트를 입력하여 학습합니다.
    우선, 우리는 pip를 사용하여 Textgenrnn과 TensorFlow를 설치하기를 희망합니다. 아래와 같습니다.
    pip3 install textgenrnn tensorflow
    
    현재 가장 좋아하는 Python IDE/text 편집기(Spyder 사용)에 다음 3개만 추가하면 됩니다(예, 3개만!)파이썬 행:
    from textgenrnn import textgenrnn
    
    textgen = textgenrnn()
    textgen.generate()
    
    위의 명령을 Textgenrnn 강좌에 따라 실행하면 다음과 같은 출력이 표시됩니다.
    [Spoiler] Anyone else find this post and their person that was a little more than I really like the Star Wars in the fire or health and posting a personal house of the 2016 Letter for the game in a report of my backyard.
    
    
    현재 이것은 큰 의미가 없다. 당신의 출력이 위와 다를 것이다. 왜냐하면 당신은 이미 인공지능으로 텍스트를 썼기 때문이다.맞아요. 출력은 인공지능의 출력입니다. 이 인공지능은 Textgenrnn 모듈 내의 데이터에 따라 훈련합니다.이게 얼마나 좋아요?당신의 첫 번째 인공지능 텍스트 생성기를 잘 훈련시켰습니다!

    저희가 데이터를 좀 찾아볼게요.


    우리는 미리 불러온 데이터에 따라 출력을 생성하는 인공지능이 하나 있는데, 지금 우리가 해야 할 일은 새로운 텍스트에서 모형을 훈련하는 것이다.이것은 단지 두 줄의 코드만 필요로 한다는 사실이 증명되었다.
    textgen.train_from_file('yourFileGoesHere.txt', num_epochs=1)
    textgen.generate()
    
    여느 때와 마찬가지로 어려운 부분은 대량의 데이터와 정확한 형식의 데이터를 얻는 것이다.이것이 바로 제가'해리 포터'를 선택한 이유입니다. 팬들이 저를 포함시킬 거라는 것을 알고 있습니다. 그들은 spells.csv, 이것은 책의 서로 다른 주문의 CSV입니다!감사합니다 @Gulsah Demiryurek 모든 것이 당신 덕분입니다!:)

    주의: 주의해야 할 것은 당신이 찾은 데이터가 깨끗하고 당신의 용례에 적합하다는 것입니다. 저는 위의 내용(주로 값에서 삭제"와 기타;를 정리했습니다. 당신은 찾을 수 있습니다here.
    지금 우리가 해야 할 일은 csv 파일을 train_from_file 에 추가하는 것입니다. 맞습니까?불행하게도, Textgenrnn은 우리의 데이터에 특정한 형식, 즉 단독 줄에 값을 표시하도록 요구합니다.csv에서 주문과 효과를 선택하고 다음 그림과 같이 단독 텍스트 파일에 저장해야 합니다.
    # Get spells and effects from csv
    with open('Spells.csv') as csvfile:
        spells = []
        effects = []
        spellsreader = csv.reader(csvfile, delimiter=';')
        next(spellsreader, None)  # skip the headers
        for row in spellsreader:
            if not (row[1] == 'Unknown' or row[1] == ''):
                print(row[1])
                spells.append(row[1])
                effects.append(row[3])
    
    # Write to single line text files ready for input to textgenrnn
    with open("spells.txt", "w") as output:
        output.write('\n'.join(spells))
    
    with open("effects.txt", "w") as output:
        output.write('\n'.join(effects))
    
    이제 데이터가 생겼어요!!

    이 모든 것을 함께 놓아라, 해리포터의 출력


    마법을 생성하려면 다음과 같이 간단하게 수행할 수 있습니다.
    # Generate Spells
    spellgen = textgenrnn()
    spellgen.train_from_file('spells.txt', num_epochs=1)
    generated_spells = spellgen.generate(5, return_as_list=True)
    
    출력:
    Evpaborrra
    Incendiarars
    Lomomorrius
    Flips
    Glandiren Skullus
    
    맞춤법 검사 생성 유사:
    # Generate Spell Effects
    effectgen = textgenrnn()
    effectgen.train_from_file('effects.txt', num_epochs=1)
    generated_effects = effectgen.generate(5, return_as_list=True)
    
    출력:
    Mends target
    Conjures sparks
    Turns water to splose
    she nothing the juckers
    Turns target to shee
    
    이 출력들 재밌어요?

    생성된 내용은 영원히 완벽한 의미가 없을 것이다. 이것도 즐거움의 일부분이라는 것을 우리는 알고 있다. 그러나 주문과 효과가 서로 관련된다면 나는 그것을 더욱 좋아한다.예를 들어'선동자'는 불을 질러야 하고,'Evpaborra'는 뭔가를 증발해야 하고,'Flips'는 뭔가를 잘 뒤집어야 한다.마법 명칭에 따라 효과를 만들어 봅시다.
    우리가 주문과 효과 그룹을 만들 때, 이 점을 간단하게 하려면 하나의 그룹을 만들면 된다. 그 중 모든 요소는 주문 이름과 효과이다.
    spell = "%s: %s" % (row[1],row[3])
                print(spell)
                spells.append(spell)
    
    이렇게 하면 우리의 모델이 훈련한 데이터(따라서 우리의 모델이 출력한 데이터)는 맞춤법 명칭이 되고 그에 상응하는 효과가 있을 것이다.지금 우리는 주문 훈련만 받는다.txt, 내 출력은 다음과 같다.
    Flippers: Turns target
    Stuckus: Creates mess of things in the wand things
    Incardimo: Reveals doors
    Solor: Reveals objects of the flames
    Victimous: Transimotions target
    

    나는 이것이 문제를 해결했는지 확실하지 않지만, 내가 보기에는 확실히 더 좋다. 솔로는 불/빛과 관련이 있다. 이번 플립퍼스는 뭔가를 뒤집고 있다. - 멋지게 뒤집고 있다!
    자세한 내용을 보려면 다음 의견을 참조하십시오.)
    좋아, 우리는 해냈어!우리는 새로운 해리 포터의 주문을 만들었다. 비록 나는 제이 K 롤린이 그것을 사용하고 싶어 한다고 믿지 않지만.

    여기서 어디로 갑니까?


    이 예는 Textgenrnn을 사용하여 텍스트를 만드는 것이 얼마나 쉬운지 보여 주었으면 합니다.여기서 데이터를 찾을 수만 있다면 원하는 것을 만들 수 있다.Kaggle Datasets는 항상 좋은 데이터 원천으로 통상적으로 좋은 기록이 있다.그러나, 나도 너에게 더욱 개인적인/너와 관련된 일을 하도록 격려한다. 왜냐하면 이것은 항상 동기를 불러일으키는 데 도움이 되기 때문이다.내 직장에서의 해커 경쟁에서 나는 우리가 쌓은 모든 Jira 어음에 따라 Jira 어음을 만들었다. 이것은 매우 흥미롭지만, 우리의 일부 어음이 얼마나 엉망으로 작성되었는지, 그것들이 얼마나 중복되었는지 보여 준다.예를 들어'문서 프로젝트'는 우리의 많은 Jira 티켓 이름에 나타나기 때문에 나의 신경 네트워크는'문서 프로젝트 문서 프로젝트'를 제기했다. - 이것은 미묘한 알림이다. 우리 개발자들은 항상 우리의 업무를 기록하는 것을 소홀히 한다.
    우선, 텍스트 생성의 독특한 세계를 마음껏 탐색하세요!

    이 글의 전체 코드는 나의 GitHub에서 찾을 수 있다.

    이것은 제가 처음으로 개발을 발표한 것이고 제가 처음으로 블로그에 발표한 것입니다. 여러분의 피드백에 감사드립니다!나는 누군가가 이것이 도움과/또는 재미있다는 것을 발견하기를 바란다.읽어주셔서 감사합니다!:)

    좋은 웹페이지 즐겨찾기