GithubHelp home page GithubHelp logo

furuikeya's Introduction

#Furuikeya Protocol

##About Furuikeya is a small python program whose goal is to generate haikus from twitter API 1.1.

Some of the best haikus produced by the program are published on Twitter by @FuruikeyaBot.

##The Haiku What is a Haiku?

A haiku is a Japanese short poem and consist of three structural criteria:

###Verses Three verses : a short one of five syllables, a long one of seven syllables and finally another short one of five syllables. The final structure of the poem is therefore 5/7/5.

###Kireji A kireji, or cutting word, whose aim is to divide the poem into two parts. A haiku is therefore often considered as a 12/5 or 5/12 syllables composition.

###Kigo Finally, a kigo, or season word, whose aim is to symbolize the season defining the ambiance of the poem.

One fact, which is seldom known by occidental people, is that haijins (haiku poets) using a particular kigo consciouly or unconsciously in the haiku, tie their poem to every other haikus ever written and containing the same kigo.

This enable haijins to build beautiful litterary networks and canvases from this implied intertextuality.

For instance, in this famous haiku by Matsuo Bashô and from which I entitled the program :

Furuike ya kawazu tobikomu mizu no oto.

The Ancient Pond -
A Frog jumps in
Water's Sound.

(古池 蛙飛び込む 水の音), Matsuo Bashô

the kigo is kawazu, an ancient word meaning 'frog' and symbolizing spring.

##Concept Hence, the main idea behind furuikeya is to consider Twitter's hashtags as an equivalent concept to the kigo. Indeed, using a hashtag in a tweet will indicate which themes you are supposed to evoke within it and does link it to every other tweet using the same one.

Let's use it to generate haikus then.

##Protocol How does furuikeya work technically?

First of all, the program must be fed with a kigo. "Moon", for instance.

Hence, the program will ask Twitter API for tweets concerning the kigo hashtag.

Then, a blank haiku is created and a kireji is randomly selected from a list of common used kireji in english haikus such as '-', ';', ',' and other several punctuations. Its positions, i.e. between first and second verse of between second and third verse, is also choosen randomly.

The program has now to parse the tweets to find potential verses for the haiku. The tweets are filtered and cleaned following some procedures that you may find at the beginning of the file 'model/protocol.py'.

The tweets are then cut into sentences parts. Syllables are counted and every piece that has +- 1 syllables from 5 or 7 is kept to become a verse.

Once the haiku is finished, it is outputted by the program.

##Philosophy The claim of the furuikeya program is not to convey that litterature can be procedurally generated. On the contrary, the aim of furuikeya is just to communicate a reflexion about poetry and litterature as a whole.

This being said, one has to know that the furuikeya program is able to produce a grammatically correct haiku every 20 tries and gives a vaguely aesthetically correct one every 50. The intervention of a human is still needed to determine which ones are good and which ones are not. This is therefore a reflexion about choice and serendipity in litterature rather than an attempt at the annihilation of artistic creativity.

##The Saijiki A saijiki, in Japanese, is an index of the most common kigos used in haikus.

In furuikeya, a file ('config/saijiki.txt') symbolizes your personal saijiki in which you can write a kigo per line. This file can be used afterwards by the program to batch generate haikus.

##Installation To install furuikeya, simply clone it into the desired directory and the download its dependencies. (Be advised that you should use a virtualenv and install the dependencies within it.)

git clone https://github.com/Yomguithereal/furuikeya.git
cd furuikeya
pip install -r requirements

Hence, you should edit the settings.example.yml file to fill in your twitter authentification. Rename the file to settings.yml afterwards.

twitter:
    consumer_key: 'YOUR_CONSUMER_KEY'
    consumer_secret: 'YOUR_CONSUMER_SECRET'
    oauth_token: 'YOUR_OAUTH_TOKEN'
    oauth_secret: 'YOUR_OAUTH_SECRET'

##Usage

# Generating one haiku with a random kigo from the saijiki
python furuikeya.py

# Generating <N> haikus with a random kigo from the saijiki
python furuikeya.py -n/--number <N>

# Generating one haiku with selected <K> kigo
python furuikeya.py -k/--kigo <K>

# Generating <N> haikus with selected <K> kigo
python furuikeya.py -n/--number <N> -k/--kigo

# Generating one haiku per kigo in saijiki
python furuikeya.py -s/--saijiki

# Generating <N> haikus per kigo in saijiki
python furuikeya.py -s/--saijiki -n/--number <N>

##Dependencies

python 2.7
sylli
pyyaml
nltk
twitter
colifrapy

Furuikeya uses Sylli library to count syllables.

furuikeya's People

Contributors

yomguithereal avatar

Watchers

Kyros Koh avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.