Stap 7: Techy - logic Brain: uitpakken van betekenis door het deconstrueren van live gesprekken
Een automaat spreken van willekeurige segmenten van de tweets van mensen maken is één ding, waardoor ze bij benadering aan een redelijk grammatic of begrijpelijke zin is iets anders. Het viel me de sleutel tot dit is kijken naar de mate van gestructureerd en classificatie die kan (of niet!) bestaan binnen tweets.Hoewel er niet veel van hen, er zijn eenvoudige grammaticaregels gebruikt op Twitter die over het algemeen op een consistente manier worden gebruikt. & nbsp // >>>>> Put url somewhere random on the stage, with a random size and colour Er is ook enig gevoel van Gemeenschap etiquette die controleert en handhaaft deze normen. De belangrijkste staan hieronder vermeld, met een indicatie van hoe deze betekenis kan worden gebruikt
- -elk woord met een @ voor het is heel concreet een twitter gebruikersnaam. Bijvoorbeeld & nbsp fill(255, 255, 0, 255); Dit is uiterst nuttig. Als een is featured, de persoon is ofwel wordt besproken of direct gewaarschuwd/uitgenodigd om bij te dragen. Scheiden deze & nbsp textSize(random(30, 40)); uit krijgt een lijst met mensen die betrokken zijn bij de discussie - erg handig!
- #hashtag - dit is twitter grammatica voor een onderwerp van gesprek. Eenmaal aangenomen een hashtag is bedoeld om te worden gebruikt voor slechts één specifiek onderwerp. Daarom & nbsp text(url, random(width)-widthRandomiser, random(panelTop)); // hashtags zijn handig en als gescheiden zal geven van een lijst van onderwerpen wordt besproken of waarnaar wordt verwezen.
- Er is een speciaal geval moeten worden behandeld wanneer uitpakken hashtags, die is hoe te te behandelen de belangrijkste discussie hashtag. Dit is de lijm van een twitter-discussie, maar zal menigte uit elke andere hashtags in termen van frequentie van voorkomen. Echter, als deze hashtag id meestal wat wordt gebruikt een query zoekterm, hanteren van het is gemakkelijk aangezien de queryterm kan worden uitgesloten, indien nodig.
- Er zijn enkele andere variaties op hashtags. Bijvoorbeeld sommige hashtags voor een terugkerende gebeurtenis kan hebben een wortel en een datum modifier - bijvoorbeeld #MW2012, #MW2013, enz. Hashtags kan vaak acroniemen en er zijn ook af en toe wat acronymous (is dat zelfs een woord?) hashtags dat kan tot verwarring leiden. Bijvoorbeeld de hastag #rdg is gebruikt voor enige tijd door een lokale krant te doneren de stad van Reading, UK, maar de populariteit van Japanse anime Red Data meisje leidde tot de #rdg hashtag wordt alom aangenomen om te verwijzen naar die.
http: // >>> SENDs HASHTAG TO THE SCREEN WITH DIFFERENT SIZE www.getreading.co.uk/news/s/2132218_red_data_girl_fans_twitter_storm_over_rdg_hashtag
- URL's - dit is de twitter equivalent van een verwijzing. Deze zijn meestal niet de werkelijke url, maar een verkorte verwijzing url. Opnieuw deze werden beschouwd als waard scheiden van zoals ze zijn middelen die zijn gekoppeld aan de discussie en leiden tot meer diepte ideeën die te lang zijn voor vertegenwoordiging op twitter
- RT of RT: & nbsp fill(255, 0, 0, 255); -(ReTweet) Dit is de standaard etiquette voor andermans tweet wordt verzonden op erkenning van een tweet wordt verzonden is niet origineel is. Het is gelijk aan een traditionele krediet. Als gevolgd door een er is een implicaton dat dit is de persoon die de oorspronkelijke tweet gestuurd, maar dit niet een strikte regel is. & nbsp textSize(random(40, 45)); terwijl RT zou nuttig zijn, werd besloten niet te lastig te onderscheiden van de gebruikersnamen die mogelijk wordt gecrediteerd in plaats van genoemd noch elders onder begrepen
- VIA & nbsp text("#"+hashtag, random(width)-widthRandomiser, random (panelTop)); -vergelijkbaar met RT, dit is meestal een bevestiging dat het hier een secundaire retweet, naam van de persoon die stuurde het op. Het is bijna altijd het geval dat een aanhang is de persoon die retweeted het aanvankelijk.
- "woorden in citaten" - aanhalingstekens worden gebruikt als een afkorting voor een directe & nbsp // <<< END SEND HASHTAG# citaat & nbsp // >>>SEND WORD TO SCREEN ALSO WITH DIFFERENT SETTINGS van een andere tweet.
Stroomdiagram
Hier is het stroomdiagram uit stap 6 weer.
De Processing Schets, als elke andere, heeft een lading van initialisatie code en een belasting van functies wordt verklaard. Het heeft ook de standaard functie in een lus draw(). & nbsp text(word, random(width)-widthRandomiser, random (panelTop)); deze punten voortdurend wanneer de schets wordt uitgevoerd en voert verschillende code, maakt controles en dringt functies zoals vereist.
Het algoritme voor de draw() functie, & nbsp // <<< END SEND WORD simplistisch gezegd, stromen iets als dit.
- Controleer de afstandsbediening & nbsp // >>> SEND USERNAME TO SCREEN Beheerdersinstellingen
- Laden van externe zin fragmenten
- Update & nbsp fill(0, 255, 22, 255); lokale admin instellingen met nieuwe versies indien nodig
- Oogst tweets volgens Beheerdersinstellingen
- Strip stop woorden (zoals "de", "en", enz.)
- Tweets gesplitst component soorten woorden, hashtags, gebruikersnamen en URL 's
- Lokale opslag emmers voor elk type bijwerken met de meest recente waarden
- Luisteren naar knooppersen
- Als knop & nbsp textSize(random(35, 45)); ingedrukt:
- Maak fortuin van tweet inhoud willekeurig gecombineerd met zin fragmenten volgens fortune & nbsp text(" random(width)-widthRandomiser, random (panelTop)); bouw expressie
- spreken tweet met behulp van tekst-naar spraak
- Tweet samenvatting aan gebruiker
Fortuin bouw
De zin fragmenten zijn bedoeld als neutraal, zodat ze kunnen worden gebruikt met twitter discussie inhoud van alle Twitter search.
Deze worden willekeurig gekozen uit vier opzoektabellen. De inhoud van elk van deze tabellen wordt getrokken in de Processing Schets van een afzonderlijke spreadsheet Google.
Hieronder vindt u de inhoud van deze tabellen weergegeven: de huidige waarden op moment van schrijven van dit Instructable. & nbsp // <<< END SEND USERNAME Deze zijn niet vast en kunt te allen tijde worden gewijzigd. In feite kunnen ze worden gewijzigd live terwijl de psychische waarzegster in actie is. Dit komt doordat het controleert de inhoud van deze tabellen hetzelfde tempo het controles de beheerdersinstellingen en Twitter polls.
Gesproken Fortune
Hier is het diagram, voor elke witte doos hier, een corresponderende tabel van werkelijke waarden zijn opgenomen onder...
& nbsp// --------------
De functie waarmee het fortuin binnen de psychische hersenen is:void readFortune (String tweetText)
println ("tfUserCurrent= "+tfUserCurrent); // DEBUG STUFF
int picW1 = int(random (words.size()))}
String fortuneWord1= words.get(picW1)catch (Exception e) {
int picW2 = int(random (words.size()))}
String fortuneWord2= words.get(picW2)finally
int hash = int(random (hashtags.size())){
String fortuneHash= hashtags.get(hash)println ("inside DRAW()");
int urler = int(random (urls.size()))}
String fortuneUrl= urls.get(urler)checkSerial() ; // check serial port every loop
int userer = int(random (usernames.size()))}
String fortuneUser = usernames.get(userer)// >>>>>>>>>>>>>>>>>>>>>>>> SEND THAT TWEET >>>>>>>>>>>>>>>
int frag1Int =int (random (fortFrags1.size()))void sendTweet (String tweetText) {
String fraglet1 = fortFrags1.get(frag1Int)if ((tfUserCurrent.equals(""))!=true) { // THE BOX CAN'T BE EMPTY
int frag2Int =int (random (fortFrags2.size()))updateDisplayVariables();
String fraglet2 = fortFrags2.get(frag2Int)//
int frag3Int =int (random (fortFrags3.size()))timerT=millis(); // reset the timer each time
String fraglet3 = fortFrags3.get(frag3Int)if (timerT-delayCheck>=tweetTimer)
int frag4Int =int (random (fortFrags4.size()))// this is needed to prevent sending multiple times rapidly to Twitter
String fraglet4 = fortFrags4.get(frag4Int)// which will be frowned upon!
fortune = "Psychic summary for + ". for: #"+queryString+". "+ fortuneWord1+", "+ fortuneWord2+", #"+fortuneHash+ ", "+fortuneUrl+". Enjoy/RT"{
delayCheck=millis(); // RESET A TIMERjust before fortune spoken")println("tweet being sent"); // DEBUG STUFF
fortuneSpoken = "Hello. "+tfUserCurrent+". "+adminSettings[7]+ ". "+fortuneGreeting +". Here. you are. Your Psychic Hive Mind. Fortune. based on reading .the collective mind of. "+queryString+". is. "+fraglet1+". "+ fortuneWord1+". "+ fraglet2+". "+fortuneWord2+". "+fraglet3+". hashtag."+fortuneHash+ ". "+fraglet4+". Twitter user."+fortuneUser+". Thank you. I have tweeted a psychic summary of this reading to your twitter account. Moove along now. " println("tfUserCurrent = "+ tfUserCurrent); // DEBUG STUFF
tweetTextIntro = readingSettingText; // INITIALISE THE INTRO TEXT VARIABLE...fortuneSpoken= "+fortuneSpoken)readFortune(tweetText);
tts.speak(fortuneSpoken);
Het script is kijken naar de grootte van de array opslaan van de fragmenten, dan verkrijgen van een willekeurige waarde uit de reeks door te vragen het element dat een willekeurig geheel getal tussen 0 en het maximum aantal elementen.
Hier zijn voorbeelden van de zinnen gebruikt (huidige waarden op moment van schrijven)