Initial work on spam/ham classifier

This commit is contained in:
Mattia Giambirtone 2023-03-22 11:49:43 +01:00
parent 53bdba8221
commit 84c46caba3
Signed by: nocturn9x
GPG Key ID: 8270F9F467971E59
13 changed files with 18348 additions and 88 deletions

2772
assets/datasets/extra.json Normal file

File diff suppressed because it is too large Load Diff

2494
assets/datasets/ham.json Normal file

File diff suppressed because it is too large Load Diff

3180
assets/datasets/spamham.json Normal file

File diff suppressed because it is too large Load Diff

6619
assets/datasets/tweets.json Normal file

File diff suppressed because it is too large Load Diff

1625
assets/emojis.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,406 @@
{
"spam": [
"Today's Offer! Claim ur 150 worth of discount vouchers! Text YES to 85023 now! SavaMob, member offers mobile! T Cs 08717898035. 3.00 Sub. 16 . Unsub reply X",
"Please call our customer service representative on 0800 169 6031 between 10am-9pm as you have WON a guaranteed 1000 cash or 5000 prize!",
"URGENT We are trying to contact you Last weekends draw shows u have won a \u00a31000 prize GUARANTEED Call 09064017295 Claim code K52 Valid 12hrs 150p pm",
"URGENT We are trying to contact you Last weekends draw shows u have won a 1000 prize GUARANTEED Call 09064017295 Claim code K52 Valid 12hrs 150p pm",
"Your credits have been topped up for http://www.bubbletext.com Your renewal Pin is tgxxrz",
"5 Free Top Polyphonic Tones call 087018728737, National Rate. Get a toppoly tune sent every week, just text SUBPOLY to 81618, \u00a33 per pole. UnSub 08718727870.",
"Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send GO to 86688 only 150p/msg. CC: 08718720201 PO BOX 114/14 TCR/W1",
"WIN a \u00a3200 Shopping spree every WEEK Starting NOW. 2 play text STORE to 88039. SkilGme. TsCs08714740323 1Winawk! age16 \u00a31.50perweeksub.",
"Buy Space Invaders 4 a chance 2 win orig Arcade Game console. Press 0 for Games Arcade (std WAP charge) See o2.co.uk/games 4 Terms + settings. No purchase",
"<Forwarded from 21870000>Hi - this is your Mailbox Messaging SMS alert. You have 4 messages. You have 21 matches. Please call back on 09056242159 to retrieve your messages and matches",
"Congratulations ur awarded either \u00a3500 of CD gift vouchers & Free entry 2 our \u00a3100 weekly draw txt MUSIC to 87066 TnCs www.Ldew.com1win150ppmx3age16",
"Hi I'm sue. I am 20 years old and work as a lapdancer. I love sex. Text me live - I'm i my bedroom now. text SUE to 89555. By TextOperator G2 1DA 150ppmsg 18+",
"BangBabes Ur order is on the way. U SHOULD receive a Service Msg 2 download UR content. If U do not, GoTo wap. bangb. tv on UR mobile internet/service menu",
"complimentary 4 STAR Ibiza Holiday or 10,000 cash needs your URGENT collection. 09066364349 NOW from Landline not to lose out! Box434SK38WP150PPM18+",
"Thanks for your ringtone order, reference number X49.Your mobile will be charged 4.50. Should your tone not arrive please call customer services 09065989182",
"Adult 18 Content Your video will be with you shortly",
"PRIVATE! Your 2003 Account Statement for 07753741225 shows 800 un-redeemed S. I. M. points. Call 08715203677 Identifier Code: 42478 Expires 24/10/04",
"Gr8 Poly tones 4 ALL mobs direct 2u rply with POLY TITLE to 8007 eg POLY BREATHE1 Titles: CRAZYIN, SLEEPINGWITH, FINEST, YMCA :getzed.co.uk POBox365O4W45WQ 300p",
"Orange customer, you may now claim your FREE CAMERA PHONE upgrade for your loyalty. Call now on 0207 153 9996. Offer ends 14thMarch. T&C's apply. Opt-out availa",
"You have an important customer service announcement. Call FREEPHONE 0800 542 0825 now!",
"Congrats! 2 mobile 3G Videophones R yours. call 09063458130 now! videochat wid your mates, play java games, Dload polyPH music, noline rentl.",
"Congratulations ur awarded either a yrs supply of CDs from Virgin Records or a Mystery Gift GUARANTEED Call 09061104283 Ts&Cs www.smsco.net \u00a31.50pm approx 3mins",
"3 FREE TAROT TEXTS! Find out about your love life now! TRY 3 FOR FREE! Text CHANCE to 85555 16 only! After 3 Free, Msgs \u00a31.50 each",
"UR GOING 2 BAHAMAS! CallFREEFONE 08081560665 and speak to a live operator to claim either Bahamas cruise of2000 CASH 18+only. To opt out txt X to 07786200117",
"SMS SERVICES. for your inclusive text credits, pls goto www.comuk.net login= 3qxj9 unsubscribe with STOP, no extra charge. help 08702840625.COMUK. 220-CM2 9AE",
"You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+ ",
"FREEMSG: Our records indicate you may be entitled to 3750 pounds for the Accident you had. To claim for free reply with YES to this msg. To opt out text STOP",
"Natalie (20/F) is inviting you to be her friend. Reply YES-165 or NO-165 See her: www.SMS.ac/u/natalie2k9 STOP? Send STOP FRND to 62468",
"New Tones This week include: 1)McFly-All Ab.., 2) Sara Jorge-Shock.. 3) Will Smith-Switch.. To order follow instructions on next message",
"Urgent Please call 09066612661 from landline. \u00a35000 cash or a luxury 4* Canary Islands Holiday await collection. T&Cs SAE award. 20M12AQ. 150ppm. 16+ \u20ac\u0153",
"1000's of girls many local 2 u who r virgins 2 this & r ready 2 4fil ur every sexual need. Can u 4fil theirs? text CUTE to 69911(\u00a31.50p. m)",
"URGENT! Your mobile No 07xxxxxxxxx won a \u00a32,000 bonus caller prize on 02/06/03! this is the 2nd attempt to reach YOU! call 09066362231 ASAP! BOX97N7QP, 150PPM",
"As a valued customer, I am pleased to advise you that following recent review of your Mob No. you are awarded with a \u00a31500 Bonus Prize, call 09066368470",
"ASKED 3MOBILE IF 0870 CHATLINES INCLU IN FREE MINS. INDIA CUST SERVs SED YES. L8ER GOT MEGA BILL. 3 DONT GIV A SHIT. BAILIFF DUE IN DAYS. I O 250 3 WANT 800",
"YES! The only place in town to meet exciting adult singles is now in the UK. Txt CHAT to 86688 now! 150p/Msg.",
"Todays Voda numbers ending 1225 are selected to receive a 50award. If you have a match please call 08712300220 quoting claim code 3100 standard rates app ",
"Thanks for your ringtone order, reference number X29. Your mobile will be charged 4.50. Should your tone not arrive please call customer services 09065989180",
"accordingly. I repeat, just text the word ok on your mobile phone and send",
"Wanna get laid 2nite? Want real Dogging locations sent direct to ur mobile? Join the UK's largest Dogging Network. Txt PARK to 69696 now! Nyt. ec2a. 3lp \u00a31.50/msg",
"wamma get laid?want real doggin locations sent direct to your mobile? join the UKs largest dogging network. txt dogs to 69696 now!nyt. ec2a. 3lp \u00a31.50/msg.",
"Call 09094100151 to use ur mins! Calls cast 10p/min (mob vary). Service provided by AOM, just GBP5/month. AOM Box61,M60 1ER until u stop. Ages 18+ only!",
"Congratulations ur awarded 500 of CD vouchers or 125gift guaranteed & Free entry 2 100 wkly draw txt MUSIC to 87066 TnCs www.Ldew.com1win150ppmx3age16",
"sexy sexy cum and text me im wet and warm and ready for some porn! u up for some fun? THIS MSG IS FREE RECD MSGS 150P INC VAT 2 CANCEL TEXT STOP",
"complimentary 4 STAR Ibiza Holiday or \u00a310,000 cash needs your URGENT collection. 09066364349 NOW from Landline not to lose out! Box434SK38WP150PPM18+",
"Block Breaker now comes in deluxe format with new features and great graphics from T-Mobile. Buy for just 5 by replying GET BBDELUXE and take the challenge",
"Urgent! call 09066350750 from your landline. Your complimentary 4* Ibiza Holiday or 10,000 cash await collection SAE T&Cs PO BOX 434 SK3 8WP 150 ppm 18+",
"Great News! Call FREEFONE 08006344447 to claim your guaranteed 1000 CASH or 2000 gift. Speak to a live operator NOW!",
"Customer Loyalty Offer:The NEW Nokia6650 Mobile from ONLY \u00a310 at TXTAUCTION! Txt word: START to No: 81151 & get yours Now! 4T&Ctxt TC 150p/MTmsg",
"URGENT This is our 2nd attempt to contact U. Your \u00a3900 prize from YESTERDAY is still awaiting collection. To claim CALL NOW 09061702893. ACL03530150PM",
"Todays Voda numbers ending 5226 are selected to receive a ?350 award. If you hava a match please call 08712300220 quoting claim code 1131 standard rates app ",
"We tried to contact you re your reply to our offer of 750 mins 150 textand a new video phone call 08002988890 now or reply for free delivery tomorrow",
"TheMob> Check out our newest selection of content, Games, Tones, Gossip, babes and sport, Keep your mobile fit and funky text WAP to 82468",
"URGENT! Your mobile was awarded a \u00a31,500 Bonus Caller Prize on 27/6/03. Our final attempt 2 contact U! Call 08714714011",
"3 FREE TAROT TEXTS! Find out about your love life now! TRY 3 FOR FREE! Text CHANCE to 85555 16 only! After 3 Free, Msgs 1.50 each",
"Congratulations! Thanks to a good friend U have WON the \u00a32,000 Xmas prize. 2 claim is easy, just call 08718726978 NOW! Only 10p per minute. BT-national-rate",
"You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+",
"ree entry in 2 a weekly comp for a chance to win an ipod. Txt POD to 80182 to get entry (std txt rate) T&C's apply 08452810073 for details 18+",
"U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094594",
"You are a winner U have been specially selected 2 receive 1000 or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810910p/min (18+) ",
"You have won ?1,000 cash or a ?2,000 prize! To claim, call09050000327. T&C: RSTM, SW7 3SS. 150ppm",
"Reminder: You have not downloaded the content you have already paid for. Goto http://doit. mymoby. tv/ to collect your content.",
"Get ur 1st RINGTONE FREE NOW! Reply to this msg with TONE. Gr8 TOP 20 tones to your phone every week just \u00a31.50 per wk 2 opt out send STOP 08452810071 16",
"Hottest pics straight to your phone!! See me getting Wet and Wanting, just for you xx Text PICS to 89555 now! txt costs 150p textoperator g696ga 18 XxX",
"PRIVATE! Your 2003 Account Statement for 07815296484 shows 800 un-redeemed S.I.M. points. Call 08718738001 Identifier Code 41782 Expires 18/11/04 ",
"U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094599",
"todays vodafone numbers ending with 0089(my last four digits) are selected to received a 350 award. If your number matches please call 09063442151 to claim your 350 award",
"Ur ringtone service has changed! 25 Free credits! Go to club4mobiles.com to choose content now! Stop? txt CLUB STOP to 87070. 150p/wk Club4 PO Box1146 MK45 2WT",
"December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update Co FREE on 08002986906",
"SPJanuary Male Sale! Hot Gay chat now cheaper, call 08709222922. National rate from 1.5p/min cheap to 7.8p/min peak! To stop texts call 08712460324 (10p/min)",
"Please call our customer service representative on 0800 169 6031 between 10am-9pm as you have WON a guaranteed \u00a31000 cash or \u00a35000 prize!",
"Todays Vodafone numbers ending with 4882 are selected to a receive a 350 award. If your number matches call 09064019014 to receive your 350 award.",
"Valentines Day Special! Win over 1000 in our quiz and take your partner on the trip of a lifetime! Send GO to 83600 now. 150p/msg rcvd. CustCare:08718720201.",
"You are being contacted by our dating service by someone you know! To find out who it is, call from a land line 09050000878. PoBox45W2TG150P",
"U 447801259231 have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094597",
"URGENT! Your Mobile number has been awarded with a 2000 prize GUARANTEED. Call 09058094455 from land line. Claim 3030. Valid 12hrs only",
"More people are dogging in your area now. Call 09090204448 and join like minded guys. Why not arrange 1 yourself. There's 1 this evening. A\u00a31.50 minAPN LS278BB",
"You are awarded a SiPix Digital Camera! call 09061221061 from landline. Delivery within 28days. T Cs Box177. M221BP. 2yr warranty. 150ppm. 16 . p p\u00a33.99",
"URGENT! We are trying to contact U. Todays draw shows that you have won a \u00a3800 prize GUARANTEED. Call 09050001295 from land line. Claim A21. Valid 12hrs only",
"Am new 2 club & dont fink we met yet Will B gr8 2 C U Please leave msg 2day wiv ur area 09099726553 reply promised CARLIE x Calls\u00a31/minMobsmore LKPOBOX177HP51FL",
"You are a winner U have been specially selected 2 receive 1000 cash or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810810",
"FREE for 1st week! No1 Nokia tone 4 ur mobile every week just txt NOKIA to 8077 Get txting and tell ur mates. www.getzed.co.uk POBox 36504 W45WQ 16+ norm150p/tone",
"URGENT! We are trying to contact you. Last weekends draw shows that you have won a \u00a3900 prize GUARANTEED. Call 09061701939. Claim code S89. Valid 12hrs only",
"Don't b floppy... b snappy & happy! Only gay chat service with photo upload call 08718730666 (10p/min). 2 stop our texts call 08712460324",
"You are guaranteed the latest Nokia Phone, a 40GB iPod MP3 player or a 500 prize! Txt word: COLLECT to No: 83355! IBHltd LdnW15H 150p/Mtmsgrcvd18+",
"Santa calling! Would your little ones like a call from Santa Xmas Eve? Call 09077818151 to book you time. Calls1.50ppm last 3mins 30s T&C www.santacalling.com",
"From next month get upto 50% More Calls 4 Ur standard network charge 2 activate Call 9061100010 C Wire3.net 1st4Terms PoBox84 M26 3UZ Cost 1.50 min MobcudB more",
"T-Mobile customer you may now claim your FREE CAMERA PHONE upgrade & a pay & go sim card for your loyalty. Call on 0845 021 3680.Offer ends 28thFeb.T&C's apply",
"Free msg: Single? Find a partner in your area! 1000s of real people are waiting to chat now!Send CHAT to 62220Cncl send STOPCS 087178908901.50 per msg",
"Congratulations - Thanks to a good friend U have WON the 2,000 Xmas prize. 2 claim is easy, just call 08712103738 NOW! Only 10p per minute. BT-national-rate",
"Married local women looking for discreet action now! 5 real matches instantly to your phone. Text MATCH to 69969 Msg cost 150p 2 stop txt stop BCMSFWC1N3XX",
"2p per min to call Germany 08448350055 from your BT line. Just 2p per min. Check PlanetTalkInstant.com for info & T's & C's. Text stop to opt out",
"Dear Subscriber ur draw 4 \u00a3100 gift voucher will b entered on receipt of a correct ans. When was Elvis Presleys Birthday? TXT answer to 80062",
"87077: Kick off a new season with 2wks FREE goals & news to ur mobile! Txt ur club name to 87077 eg VILLA to 87077",
"SMSSERVICES. for yourinclusive text credits, pls goto www.comuk.net login= 3qxj9 unsubscribe with STOP, no extra charge. help 08702840625.COMUK. 220-CM2 9AE",
"To review and KEEP the fantastic Nokia N-Gage game deck with Club Nokia, go 2 www.cnupdates.com/newsletter. unsubscribe from alerts reply with the word OUT",
"We tried to call you re your reply to our sms for a video mobile 750 mins UNLIMITED TEXT free camcorder Reply or call now 08000930705 Del Thurs",
"Rock yr chik. Get 100's of filthy films &XXX pics on yr phone now. rply FILTH to 69669. Saristar Ltd, E14 9YT 08701752560. 450p per 5 days. Stop2 cancel",
"http//tms. widelive.com/index. wml?id=820554ad0a1705572711&first=trueC C Ringtone",
"IMPORTANT INFORMATION 4 ORANGE USER 0796XXXXXX. TODAY IS UR LUCKY DAY!2 FIND OUT WHY LOG ONTO http://www.urawinner.com THERE'S A FANTASTIC PRIZEAWAITING YOU!",
"We tried to contact you re your reply to our offer of a Video Handset? 750 anytime any networks mins? UNLIMITED TEXT? Camcorder? Reply or call 08000930705 NOW",
"URGENT! We are trying to contact U. Todays draw shows that you have won a 2000 prize GUARANTEED. Call 09058094507 from land line. Claim 3030. Valid 12hrs only",
"Congratulations YOU'VE Won. You're a Winner in our August 1000 Prize Draw. Call 09066660100 NOW. Prize Code 2309.",
"URGENT!: Your Mobile No. was awarded a 2,000 Bonus Caller Prize on 02/09/03! This is our 2nd attempt to contact YOU! Call 0871-872-9755 BOX95QU",
"Filthy stories and GIRLS waiting for your",
"Customer service announcement. We recently tried to make a delivery to you but were unable to do so, please call 07090298926 to re-schedule. Ref:9307622",
"IMPORTANT MESSAGE. This is a final contact attempt. You have important messages waiting out our customer claims dept. Expires 13/4/04. Call 08717507382 NOW!",
"Congratulations ur awarded either a yrs supply of CDs from Virgin Records or a Mystery Gift GUARANTEED Call 09061104283 Ts&Cs www.smsco.net 1.50pm approx 3mins",
"You have an important customer service announcement from PREMIER. Call FREEPHONE 0800 542 0578 now!",
"URGENT! We are trying to contact U. Todays draw shows that you have won a 2000 prize GUARANTEED. Call 09066358361 from land line. Claim Y87. Valid 12hrs only",
"YOU HAVE WON! As a valued Vodafone customer our computer has picked YOU to win a 150 prize. To collect is easy. Just call 09061743386",
"You are a winner you have been specially selected to receive \u00a31000 cash or a \u00a32000 award. Speak to a live operator to claim call 087123002209am-7pm. Cost 10p",
"Urgent! call 09061749602 from Landline. Your complimentary 4* Tenerife Holiday or 10,000 cash await collection SAE T&Cs BOX 528 HP20 1YF 150ppm 18+",
"Final Chance! Claim ur \u00a3150 worth of discount vouchers today! Text YES to 85023 now! SavaMob, member offers mobile! T Cs SavaMob POBOX84, M263UZ. \u00a33.00 Subs 16",
"Ur balance is now \u00a3600. Next question: Complete the landmark, Big, A. Bob, B. Barry or C. Ben ?. Text A, B or C to 83738. Good luck!",
"Get a brand new mobile phone by being an agent of The Mob! Plus loads more goodies! For more info just text MAT to 87021.",
"FREE RINGTONE text FIRST to 87131 for a poly or text GET to 87131 for a true tone! Help? 0845 2814032 16 after 1st free, tones are 3x\u00a3150pw to e\u00a3nd txt stop",
"LORD OF THE RINGS:RETURN OF THE KING in store NOW!REPLY LOTR by 2 June 4 Chance 2 WIN LOTR soundtrack CDs StdTxtRate. Reply STOP to end txts",
"Free entry in 2 a weekly comp for a chance to win an ipod. Txt POD to 80182 to get entry (std txt rate) T&C's apply 08452810073 for details 18+",
"Hack Chat. Get backdoor entry into 121 chat rooms at a fraction of the cost. Reply NEO69 or call 09050280520, to subscribe 25p pm. DPS, Bcm box 8027 Ldn, wc1n3xx",
"Get ur 1st RINGTONE FREE NOW! Reply to this msg with TONE. Gr8 TOP 20 tones to your phone every week just 1.50 per wk 2 opt out send STOP 08452810071 16",
"Back 2 work 2morro half term over! Can U C me 2nite 4 some sexy passion B4 I have 2 go back? Chat NOW 09099726481 Luv DENA Calls \u00a31/minMobsmoreLKPOBOX177HP51FL",
"83039 62735=450 UK Break AccommodationVouchers terms & conditions apply. 2 claim you mustprovide your claim number which is 15541 ",
"U have a secret admirer. REVEAL who thinks U R So special. Call 09065174042. To opt out Reply REVEAL STOP. 1.50 per msg recd. Cust care 07821230901",
"(Bank of Granite issues Strong-Buy) EXPLOSIVE PICK FOR OUR MEMBERS *****UP OVER 300% *********** Nasdaq Symbol CDGT That is a $5.00 per..",
"URGENT! Your mobile number *************** WON a 2000 Bonus Caller prize on 10/06/03! This is the 2nd attempt to reach you! Call 09066368753 ASAP! Box 97N7QP, 150ppm",
"Here is your discount code RP176781. To stop further messages reply stop. www.regalportfolio.co.uk. Customer Services 08717205546",
"Will u meet ur dream partner soon? Is ur career off 2 a flyng start? 2 find out free, txt HORO followed by ur star sign, e. g. HORO ARIES",
"Think ur smart ? Win 200 this week in our weekly quiz, text PLAY to 85222 now!T&Cs WinnersClub PO BOX 84, M26 3UZ. 16+. GBP1.50/week",
"Hi ya babe x u 4goten bout me?' scammers getting smart..Though this is a regular vodafone no, if you respond you get further prem rate msg/subscription. Other nos used also. Beware!",
"Urgent! Please call 09061743811 from landline. Your ABTA complimentary 4* Tenerife Holiday or 5000 cash await collection SAE T&Cs Box 326 CW25WX 150ppm",
"ringtoneking 84484",
"Can U get 2 phone NOW? I wanna chat 2 set up meet Call me NOW on 09096102316 U can cum here 2moro Luv JANE xx Calls\u00a31/minmoremobsEMSPOBox45PO139WA",
"Hi babe its Jordan, how r u? Im home from abroad and lonely, text me back if u wanna chat xxSP visionsms.com Text stop to stopCost 150p 08712400603",
"Someone has conacted our dating service and entered your phone because they fancy you!To find out who it is call from landline 09111030116. PoBox12n146tf15",
"Free tones Hope you enjoyed your new content. text stop to 61610 to unsubscribe. help:08712400602450p Provided by tones2you.co.uk",
"Oh my god! I've found your number again! I'm so glad, text me back xafter this msgs cst std ntwk chg 1.50",
"Did you hear about the new Divorce Barbie? It comes with all of Ken's stuff!",
"U've been selected to stay in 1 of 250 top British hotels - FOR NOTHING! Holiday valued at 350! Dial 08712300220 to claim - National Rate Call. Bx526, SW73SS",
"our mobile number has won \u00a35000, to claim calls us back or ring the claims hot line on 09050005321.",
"January Male Sale! Hot Gay chat now cheaper, call 08709222922. National rate from 1.5p/min cheap to 7.8p/min peak! To stop texts call 08712460324 (10p/min)",
"Get a FREE mobile video player FREE movie. To collect text GO to 89105. Its free! Extra films can be ordered t's and c's apply. 18 yrs only",
"Am new 2 club & dont fink we met yet Will B gr8 2 C U Please leave msg 2day wiv ur area 09099726553 reply promised CARLIE x Calls1/minMobsmore LKPOBOX177HP51FL",
"ASKED 3MOBILE IF 0870 CHATLINES INCLU IN FREE MINS. INDIA CUST SERVs SED YES. L8ER GOT MEGA BILL. 3 DONT CARE. BAILIFF DUE IN DAYS. I O \u00a3250 3 WANT \u00a3800",
"FREE camera phones with linerental from 4.49/month with 750 cross ntwk mins. 1/2 price txt bundle deals also avble. Call 08001950382 or call2optout/J MF",
"URGENT! Your mobile No 077xxx WON a 2,000 Bonus Caller Prize on 02/06/03! This is the 2nd attempt to reach YOU! Call 09066362206 ASAP! BOX97N7QP, 150ppm",
"Congratulations - Thanks to a good friend U have WON the \u00a32,000 Xmas prize. 2 claim is easy, just call 08712103738 NOW! Only 10p per minute. BT-national-rate",
"UR awarded a City Break and could WIN a \u00a3200 Summer Shopping spree every WK. Txt STORE to 88039.SkilGme.TsCs087147403231Winawk!Age16+\u00a31.50perWKsub",
"FreeMsg Hey U, i just got 1 of these video/pic fones, reply WILD to this txt & ill send U my pics, hurry up Im so bored at work xxx (18 150p/rcvd STOP2stop)",
"TheMob>Yo yo yo-Here comes a new selection of hot downloads for our members to get for FREE! Just click & open the next link sent to ur fone...",
"URGENT! Your mobile number *************** WON a \u00a32000 Bonus Caller prize on 10/06/03! This is the 2nd attempt to reach you! Call 09066368753 ASAP! Box 97N7QP, 150ppm",
"Bought one ringtone and now getting texts costing 3 pound offering more tones etc",
"U've been selected to stay in 1 of 250 top British hotels - FOR NOTHING! Holiday valued at \u00a3350! Dial 08712300220 to claim - National Rate Call. Bx526, SW73SS",
"Free 1st week entry 2 TEXTPOD 4 a chance 2 win 40GB iPod or \u00a3250 cash every wk. Txt POD to 84128 Ts&Cs www.textpod.net custcare 08712405020.",
"Romantic Paris. 2 nights, 2 flights from \u00a379 Book now 4 next year. Call 08704439680Ts&Cs apply.",
"Win the newest \u201cHarry Potter and the Order of the Phoenix (Book 5) reply HARRY, answer 5 questions - chance to be the first among readers!",
"You have been selected to stay in 1 of 250 top British hotels - FOR NOTHING! Holiday Worth \u00a3350! To Claim, Call London 02072069400. Bx 526, SW73SS",
"PRIVATE! Your 2003 Account Statement for 07973788240 shows 800 un-redeemed S. I. M. points. Call 08715203649 Identifier Code: 40533 Expires 31/10/04",
"okmail: Dear Dave this is your final notice to collect your 4* Tenerife Holiday or #5000 CASH award! Call 09061743806 from landline. TCs SAE Box326 CW25WX 150ppm",
"This weeks SavaMob member offers are now accessible. Just call 08709501522 for details! SavaMob, POBOX 139, LA3 2WU. Only 1.50/week. SavaMob - offers mobile!",
"TBS/PERSOLVO. been chasing us since Sept for\u00a338 definitely not paying now thanks to your information. We will ignore them. Kath. Manchester.",
"Do you ever notice that when you're driving, anyone going slower than you is an idiot and everyone driving faster than you is a maniac?",
"Urgent Ur 500 guaranteed award is still unclaimed! Call 09066368327 NOW closingdate04/09/02 claimcode M39M51 1.50pmmorefrommobile2Bremoved-MobyPOBox734LS27YF",
"Hi if ur lookin 4 saucy daytime fun wiv busty married woman Am free all next week Chat now 2 sort time 09099726429 JANINExx Calls1/minMobsmoreLKPOBOX177HP51FL",
"Refused a loan? Secured or Unsecured? Can't get credit? Call free now 0800 195 6669 or text back 'help' & we will!",
"PRIVATE! Your 2003 Account Statement for <fone no> shows 800 un-redeemed S. I. M. points. Call 08715203656 Identifier Code: 42049 Expires 26/10/04",
"500 free text msgs. Just text ok to 80488 and we'll credit your account",
"Last Chance! Claim ur 150 worth of discount vouchers today! Text SHOP to 85023 now! SavaMob, offers mobile! T Cs SavaMob POBOX84, M263UZ. 3.00 Sub. 16",
"Sex up ur mobile with a FREE sexy pic of Jordan! Just text BABE to 88600. Then every wk get a sexy celeb! PocketBabe.co.uk 4 more pics. 16 3/wk 087016248",
"FreeMsg Today's the day if you are ready! I'm horny & live in your town. I love sex fun & games! Netcollex Ltd 08700621170150p per msg reply Stop to end",
"Are you unique enough? Find out from 30th August. www.areyouunique.co.uk",
"lyricalladie(21/F) is inviting you to be her friend. Reply YES-910 or NO-910. See her: www.SMS.ac/u/hmmross STOP? Send STOP FRND to 62468",
"* FREE* POLYPHONIC RINGTONE Text SUPER to 87131 to get your FREE POLY TONE of the week now! 16 SN PoBox202 NR31 7ZS subscription 450pw",
"Thanks for your Ringtone Order, Reference T91. You will be charged GBP 4 per week. You can unsubscribe at anytime by calling customer services on 09057039994",
"Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send GO to 86688 only 150p/msg. CC 08718720201 HG/Suite342/2Lands Row/W1J6HL",
"You are a \u00a31000 winner or Guaranteed Caller Prize, this is our Final attempt to contact you! To Claim Call 09071517866 Now! 150ppmPOBox10183BhamB64XE",
"Thanks for the Vote. Now sing along with the stars with Karaoke on your mobile. For a FREE link just reply with SING now.",
"ou are guaranteed the latest Nokia Phone, a 40GB iPod MP3 player or a 500 prize! Txt word: COLLECT to No: 83355! IBHltd LdnW15H 150p/Mtmsgrcvd18",
"I am hot n horny and willing I live local to you - text a reply to hear strt back from me 150p per msg Netcollex LtdHelpDesk: 02085076972 reply Stop to end",
"URGENT! We are trying to contact U. Todays draw shows that you have won a 800 prize GUARANTEED. Call 09050001808 from land line. Claim M95. Valid12hrs only",
"FREE GAME. Get Rayman Golf 4 FREE from the O2 Games Arcade. 1st get UR games settings. Reply POST, then save & activ8. Press 0 key for Arcade. Termsapply",
"Had your mobile 10 mths? Update to latest Orange camera/video phones for FREE. Save \u00a3s with Free texts/weekend calls. Text YES for a callback orno to opt out",
"URGENT! We are trying to contact U Todays draw shows that you have won a 800 prize GUARANTEED. Call 09050000460 from land line. Claim J89. po box245c2150pm",
"Fantasy Football is back on your TV. Go to Sky Gamestar on Sky Active and play 250k Dream Team. Scoring starts on Saturday, so register now!SKY OPT OUT to 88088",
"Got what it takes 2 take part in the WRC Rally in Oz? U can with Lucozade Energy! Text RALLY LE to 61200 (25p), see packs or lucozade.co.uk/wrc & itcould be u!",
"Ur HMV Quiz cash-balance is currently 500 - to maximize ur cash-in now send HMV1 to 86688 only 150p/msg",
"+449071512431 URGENT! This is the 2nd attempt to contact U!U have WON \u00a31250 CALL 09071512433 b4 050703 T&CsBCM4235WC1N3XX. callcost 150ppm mobilesvary. max\u00a37. 50",
"Hungry gay guys feeling hungry and up 4 it, now. Call 08718730555 just 10p/min. To stop texts call 08712460324 (10p/min)",
"UR GOING 2 BAHAMAS! CallFREEFONE 08081560665 and speak to a live operator to claim either Bahamas cruise of\u00a32000 CASH 18+only. To opt out txt X to 07786200117",
"December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update Co FREE on 08002986906 ",
"Text BANNEDUK to 89555 to see! cost 150p textoperator g696ga 18+ XXX",
"You have 1 new message. Please call 08712400200.",
"UR awarded a City Break and could WIN a \u00a3200 Summer Shopping spree every WK. Txt STORE to 88039 . SkilGme. TsCs087147403231Winawk!Age16 \u00a31.50perWKsub",
"You can donate 2.50 to UNICEF's Asian Tsunami disaster support fund by texting DONATE to 864233. 2.50 will be added to your next bill",
"URGENT! We are trying to contact U. Todays draw shows that you have won a 800 prize GUARANTEED. Call 09050003091 from land line. Claim C52. Valid 12hrs only",
"500 New Mobiles from 2004, MUST GO! Txt: NOKIA to No: 89545 & collect yours today!From ONLY \u00a31 www.4-tc.biz 2optout 087187262701.50gbp/mtmsg18",
"Hi this is Amy, we will be sending you a free phone number in a couple of days, which will give you an access to all the adult parties...",
"Do you want a New Nokia 3510i colour phone DeliveredTomorrow? With 300 free minutes to any mobile + 100 free texts + Free Camcorder reply or call 08000930705.",
"Double Mins & Double Txt & 1/2 price Linerental on Latest Orange Bluetooth mobiles. Call MobileUpd8 for the very latest offers. 08000839402 or call2optout/LF56",
"FREE>Ringtone! Reply REAL or POLY eg REAL1 1. PushButton 2. DontCha 3. BabyGoodbye 4. GoldDigger 5. WeBeBurnin 1st tone FREE and 6 more when u join for 3/wk",
"our mobile number has won 5000, to claim calls us back or ring the claims hot line on 09050005321."
],
"ham": [
"Hurry home. Soup is DONE!",
"\\NONE!NOWHERE IKNO DOESDISCOUNT!SHITINNIT\\\"\"",
"Dunno lei... I might b eatin wif my frens... If _ wan to eat then i wait 4 _ lar",
"S:)s.nervous # :)",
"Wat's da model num of ur phone?",
"haha but no money leh... Later got to go for tuition... Haha and looking for empty slots for driving lessons",
"I am not sure about night menu. . . I know only about noon menu",
"Haha, that was the first person I was gonna ask",
"Do you know when dad will be back?",
"I have no money 4 steve mate! !",
"Hope you are having a good week. Just checking in",
"Lol ok. I'll snatch her purse too.",
"Your gonna have to pick up a $1 burger for yourself on your way home. I can't even move. Pain is killing me.",
"I plane to give on this month end.",
"Annoying isn't it.",
"I think i've fixed it can you send a test message?",
"You do what all you like",
"Hi dis is yijue i would be happy to work wif u all for gek1510...",
"Hi dis is yijue i would be happy to work wif _ all for gek1510...",
"There's no point hangin on to mr not right if he's not makin u happy",
"Sorry about earlier. Putting out fires.Are you around to talk after 9? Or do you actually have a life, lol!",
"He's an adult and would learn from the experience. There's no real danger. I just dont like peeps using drugs they dont need. But no comment",
"Allo! We have braved the buses and taken on the trains and triumphed. I mean we\u20ac\u02dcre in b\u20ac\u02dcham. Have a jolly good rest of week",
"OH YEAH,AND HAV A GREAT TIME IN NEWQUAY-SEND ME A POSTCARD !1 LOOK AFTER ALL THE GIRLS WHILE IM GONE(U KNOW THE 1IM TALKIN BOUT!)xx",
"wiskey Brandy Rum Gin Beer Vodka Scotch Shampain Wine KUDIyarasu dhina vaazhthukkal. ..",
"Short But Cute: Be a good person, but dont try to prove it.. .Gud noon....",
"Wat r u doing?",
"Is ur paper in e morn or aft tmr?",
"I don't want you to leave. But i'm barely doing what i can to stay sane. fighting with you constantly isn't helping.",
"Was gr8 to see that message. So when r u leaving? Congrats dear. What school and wat r ur plans.",
"# w jetton ave if you forgot",
"Alright omw, gotta change my order to a half8th",
"Ah poop. Looks like ill prob have to send in my laptop to get fixed cuz it has a gpu problem",
"Unfortunately i've just found out that we have to pick my sister up from the airport that evening so don't think i'll be going out at all. We should try to go out one of th",
"Badrith is only for chennai:)i will surely pick for us:)no competition for him.",
"Good afternoon starshine! How's my boytoy? Does he crave me yet? Ache to fuck me ? *sips cappuccino* I miss you babe *teasing kiss*",
"Hi mate its RV did u hav a nice hol just a message 3 say hello coz havent sent u 1 in ages started driving so stay off roads!RVx",
"I have 2 docs appointments next week.:/ I'm tired of them shoving stuff up me. Ugh why couldn't I have had a normal body?",
"Yeah, we got one lined up for us",
"R u comin back for dinner?",
"R _ comin back for dinner?",
"Hows that watch resizing",
"Hmm thinking lor...",
"u got wat to buy tell us then u no need to come in again.",
"Do have a nice day today. I love you so dearly.",
"Oh k...i'm watching here:)",
"Wewa is 130. Iriver 255. All 128 mb.",
"Guai... shd haf seen him when he's naughty... so free today? Can go jogging...",
"K..k:)where are you?how did you performed?",
"Yar else i'll thk of all sorts of funny things.",
"Cramps stopped. Going back to sleep",
"Awesome, be there in a minute",
"Mmmmm ... It was sooooo good to wake to your words this morning, my Love!! Mmmm... I love you too, my Lion ... *devouring kiss from across the sea*",
"Damn, poor zac doesn't stand a chance",
"Thanks for ve lovely wisheds. You rock",
"Hi Petey!noi\u2019m ok just wanted 2 chat coz avent spoken 2 u 4 a long time-hope ur doin alrite.have good nit at js love ya am.x",
"Well am officially in a philosophical hole, so if u wanna call am at home ready to be saved!",
"You only hate me. You can call any but you didnt accept even a single call of mine. Or even you messaged",
"Ya ok, vikky vl c witin # mins and il reply u..",
"No need to ke qi... u too bored izzit y suddenly thk of this...",
"Great escape. I fancy the bridge but needs her lager. See you tomo ",
"No da. . Vijay going to talk in jaya tv",
"I will be gentle princess! We will make sweet gentle love...",
"Haven't found a way to get another app for your phone, eh ? Will you go to the net cafe ? Did you take that job? Geeee I need you babe. I crave to see you ...",
"Good sleep is about rhythm. The person has to establish a rhythm that the body will learn and use. If you want to know more :-)",
"Oh gei. That happend to me in tron. Maybe ill dl it in 3d when its out",
"Ok try to do week end course in coimbatore.",
"The beauty of life is in next second.. which hides thousands of secrets. I wish every second will be wonderful in ur life...!! gud n8",
"I'm outside islands, head towards hard rock and you'll run into me",
"Mystery solved! Just opened my email and he's sent me another batch! Isn't he a sweetie",
"Also track down any lighters you can find",
"Sure! I am driving but will reach my destination soon.",
"So how's scotland. Hope you are not over showing your JJC tendencies. Take care. Live the dream",
"Have a lovely night and when you wake up to see this message, i hope you smile knowing all is as should be. Have a great morning",
"I wake up long ago already... Dunno, what other thing?",
"Ok lar... Joking wif u oni...",
"Yo you around? A friend of mine's lookin to pick up later tonight",
"Do we have any spare power supplies",
"That day you asked about anand number. Why:-)",
"Dear how you. Are you ok?",
"\\Keep ur problems in ur heart",
"Indians r poor but India is not a poor country. Says one of the swiss bank directors. He says that # lac crore of Indian money is deposited in swiss banks which can be used for 'taxless' budget for # yrs. Can give # crore jobs to all Indians. From any village to Delhi 4 lane roads. Forever free power suply to more than # social projects. Every citizen can get monthly # /- for # yrs. No need of World Bank & IMF loan. Think how our money is blocked by rich politicians. We have full rights against corrupt politicians. Itna forward karo ki pura INDIA padhe.g.m.",
"PICK UR FONE UP NOW U DUMB?",
"Hey doc pls I want to get nice t shirt for my hubby nice fiting ones my budget is &lt;#&gt; k help pls I will load d card abi hw,keep me posted luv. 2 mj",
"Send me yetty's number pls.",
"I dled 3d its very imp",
"I know but you need to get hotel now. I just got my invitation but i had to apologise. Cali is to sweet for me to come to some english bloke's weddin",
"Wow. I never realized that you were so embarassed by your accomodations. I thought you liked it, since i was doing the best i could and you always seemed so happy about the cave. I'm sorry I didn't and don't have more to give. I'm sorry i offered. I'm sorry your room was so embarassing.",
"K..k...from tomorrow onwards started ah?",
"what is your account number?",
"Just now saw your message.it k da:)",
"Ugh fuck it I'm resubbing to eve",
"Just sing HU. I think its also important to find someone female that know the place well preferably a citizen that is also smart to help you navigate through. Even things like choosing a phone plan require guidance. When in doubt ask especially girls.",
"Keep my payasam there if rinu brings",
"Ok... Let u noe when i leave my house.",
"Ok i msg u b4 i leave my house.",
"Guai... u shd haf seen him when he's naughty... u so free today? Can go jogging...",
"My supervisor find 4 me one lor i thk his students. I havent ask her yet. Tell u aft i ask her.",
"Probably, want to pick up more?",
"It's ok i noe u're busy but i'm really too bored so i msg u. I oso dunno wat colour she choose 4 me one.",
"Good afternoon, my boytoy ... How are you feeling today ? Better I hope? Are you being my good boy? Are you my obedient, slave? Do you please your Queen?",
"Where wuld I be without my baby? The thought alone mite break me and I dont wanna go crazy but everyboy needs his lady xxxxxxxx",
"I don't know about anything or i'd say/ask something helpful but if you want you can pretend that I did and just text me whatever in response to the hypotheticalhuagauahahuagahyuhagga",
"Alright if you're sure, let me know when you're leaving",
"Weightloss! No more girl friends. Make loads of money on ebay or something. And give thanks to God.",
"Mmmmmmm *snuggles into you* ...*deep contented sigh* ... *whispers* ... I love you so much I can barely stand it ...",
"Do whatever you want. You know what the rules are. We had a talk earlier this week about what had to start happening, you showing responsibility. Yet, every week it's can i bend the rule this way? What about that way? Do whatever. I'm tired of having thia same argument with you every week. And a # movie DOESNT inlude the previews. You're still getting in after 1.",
"If e timing can, then i go w u lor...",
"Sorry, in meeting I'll call you later",
"NEFT Transaction with reference number # for Rs. DECIMAL has been credited to the beneficiary account on # at TIME : #",
"I was at bugis juz now wat... But now i'm walking home oredi... u so late then reply... I oso saw a top dat i like but din buy... Where r u now? ",
"Was actually sleeping and still might when u call back. So a text is gr8. You rock sis. Will send u a text wen i wake.",
"FRAN I DECIDED 2 GO N E WAY IM COMPLETELY BROKE AN KNACKERED I GOT UP BOUT 3 C U 2MRW LOVE JANX P.S THIS IS MY DADS FONE, -NO CREDIT",
"Hi this is yijue, can i meet u at 11 tmr?",
"Hi msg me:)i'm in office..",
"Vikky, come around &lt;TIME&gt; ..",
"It has everything to do with the weather. Keep extra warm. Its a cold but nothing serious. Pls lots of vitamin c",
"Y de asking like this.",
"Hello. Damn this christmas thing. I think i have decided to keep this mp3 that doesnt work.",
"Come by our room at some point so we can iron out the plan for this weekend",
"For me the love should start with attraction.i should feel that I need her every time around me.she should be the first thing which comes in my thoughts.I would start the day and end it with her.she should be there every time I dream.love will be then when my every breath has her name.my life should happen around her.my life will be named to her.I would cry for her.will give all my happiness and take all her sorrows.I will be ready to fight with anyone for her.I will be in love when I will be doing the craziest things for her.love will be when I don't have to proove anyone that my girl is the most beautiful lady on the whole planet.I will always be singing praises for her.love will be when I start up making chicken curry and end up makiing sambar.life will be the most beautiful then.will get every morning and thank god for the day because she is with me.I would like to say a lot..will tell later..",
" dun need to pick ur gf?",
"Eh ur laptop got no stock lei... He say mon muz come again to take a look c got a not...",
"Ok. I.ll do you right later.",
"Do you like shaking your booty on the dance floor?",
"I have no idea where you are",
"happened here while you were adventuring",
"# am I think? Should say on syllabus",
"Motivate Behind every darkness, there is a shining light waiting for you to find it... Behind every best friend, there is always trust and love... BSLVYL",
"Do you mind if I ask what happened? You dont have to say if it is uncomfortable.",
"Hi Dear Call me its urgnt. I don't know whats your problem. You don't want to work or if you have any other problem at least tell me. Wating for your reply.",
"You flippin out yet?",
"1's reach home call me.",
"Lovely smell on this bus and it ain't tobacco... ",
"No. It's not pride. I'm almost &lt;#&gt; years old and shouldn't be takin money from my kid. You're not supposed to have to deal with this stuff. This is grownup stuff--why i don't tell you.",
"Not directly behind... Abt 4 rows behind _...",
"Lol u still feeling sick?",
"do u think that any girl will propose u today by seing ur bloody funky shit fucking face...............asssssholeeee................",
"Found it, ENC # , where you at?",
"Up to _... wan come then come lor... But i din c any stripes skirt...",
"So is there anything specific I should be doing with regards to jaklin or what because idk what the fuck",
"Ugh y can't u just apologize, admit u were wrong and ask me to take u back?",
"Sorry i've not gone to that place. I.ll do so tomorrow. Really sorry.",
"I hope you arnt pissed off but id would really like to see you tomorrow. Love me xxxxxxxxxxxxxX",
"If anyone calls for a treadmill say you'll buy it. Make sure its working. I found an ad on Craigslist selling for $ # .",
"Babes I think I got ur brolly I left it in English wil bring it in 2mrw 4 u luv Franxx",
"Hi my email address has changed now it is ",
"Its sarcasm.. .nt scarcasim",
"Does she usually take fifteen minutes to respond to a yes or no question",
"Storming msg: Wen u lift d phne, u say \\HELLO\\\" Do u knw wt is d real meaning of HELLO?? . . . It's d name of a girl..! . . . Yes.. And u knw who is dat girl?? \\\"Margaret Hello\\\" She is d girlfrnd f Grahmbell who invnted telphone... . . . . Moral:One can 4get d name of a person",
"Thank you so much. When we skyped wit kz and sura, we didnt get the pleasure of your company. Hope you are good. We've given you ultimatum oh! We are countin down to aburo. Enjoy!",
"Much better now thanks lol",
"And do you have any one that can teach me how to ship cars.",
"I had a good time too. Its nice to do something a bit different with my weekends for a change. See ya soon",
"My drive can only be read. I need to write",
"K.i will send in # min:)",
"Well done, blimey, exercise, yeah, i kinda remember wot that is, hmm. ",
"....photoshop makes my computer shut down.",
"Yes i will be there. Glad you made it.",
" &lt;DECIMAL&gt; m but its not a common car here so its better to buy from china or asia. Or if i find it less expensive. I.ll holla",
"My sister going to earn more than me da.",
"Really do hope the work doesnt get stressful. Have a gr8 day.",
"whatever, im pretty pissed off.",
"Yep, the great loxahatchee xmas tree burning of # starts in an hour",
"What time you thinkin of goin?",
"How about clothes, jewelry, and trips?",
"Or I guess # min",
"\\CHEERS FOR CALLIN BABE.SOZI CULDNT TALKBUT I WANNATELL U DETAILS LATER WENWECAN CHAT PROPERLY X\\\"\"",
"You still around? I could use a half-8th",
"Hows the pain dear?y r u smiling?",
"Spoons it is then okay?",
"# ISH MINUTES WAS 5 MINUTES AGO. WTF.",
"Yup... Hey then one day on fri we can ask miwa and jiayin take leave go karaoke ",
"Hai priya are you right. What doctor said pa. Where are you.",
"what I meant to say is cant wait to see u again getting bored of this bridgwater banter",
"We live in the next &lt;#&gt; mins",
"If you hear a loud scream in about # minutes its cause my Gyno will be shoving things up me that don't belong :/",
"Happy valentines day I know its early but i have hundreds of handsomes and beauties to wish. So i thought to finish off aunties and uncles 1st...",
"Nope. Meanwhile she talk say make i greet you.",
"I like cheap! But im happy to splash out on the wine if it makes you feel better..",
"I.ll hand her my phone to chat wit u",
"True lov n care wil nevr go unrecognized. though somone often makes mistakes when valuing it. but they will definitly undrstnd once when they start missing it.",
"Good afternoon, my love ... How goes your day ? How did you sleep ? I hope your well, my boytoy ... I think of you ...",
"Wen ur lovable bcums angry wid u, dnt take it seriously.. Coz being angry is d most childish n true way of showing deep affection, care n luv!.. kettoda manda... Have nice day da.",
"Yeah get the unlimited",
"Come to my home for one last time i wont do anything. Trust me.",
" predict wat time _'ll finish buying?",
"Hello, my love! How goes that day ? I wish your well and fine babe and hope that you find some job prospects. I miss you, boytoy ... *a teasing kiss*",
"Can you call me plz. Your number shows out of coveragd area. I have urgnt call in vasai &amp; have to reach before 4'o clock so call me plz",
"&lt;#&gt; great loxahatchee xmas tree burning update: you can totally see stars here",
"# is fast approaching. So, Wish u a very Happy New Year Happy Sankranti Happy republic day Happy Valentines Day Happy Shivratri Happy Ugadi Happy Fools day Happy May Day Happy Independence Day, Happy Friendship,Mother,Father,Teachers,Childrens Day, & HAPPY BIRTHDAY 4 U. Happy Ganesh festival Happy Dasara Happy Diwali Happy Christmas # Good Mornings Afternoons, Evenings Nights. RememberI AM the first to WISHING U ALL THESE...your's Raj",
"Please attend the phone:)",
"I want to go to perumbavoor",
"When I was born, GOD said, \\Oh No! Another IDIOT\\\". When you were born",
"u dun wan to watch infernal affair?",
"Get ready to put on your excellent sub face :)",
"Designation is software developer and may be she get chennai:)",
"HI DARLIN I HOPE YOU HAD A NICE NIGHT I WISH I HAD COME CANT WAIT TO SEE YOU LOVE FRAN PS I WANT DIRTY ANAL SEX AND I WANT A 10 MAN GANG BANG",
"Pls she needs to dat slowly or she will vomit more.",
"Jay's getting really impatient and belligerent"
]
}

1006
assets/testsets/tweets.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,169 @@
import util/preprocessing
import util/matrix
import util/feature_extraction/text
import nn/network
import nn/util/matrix
var mlp = newNeuralNetwork(@[newDenseLayer(784, 10),
newDenseLayer(10, 16),
newDenseLayer(16, 10)],
lossFunc=MSE, activationFunc=Softmax,
learnRate=0.05, momentum=0.55,
weightRange=(start: -1.0, stop: 1.0),
biasRange=(start: -1.0, stop: 1.0))
import strformat
import sequtils
import json
import math
import times
proc loadData: tuple[corpus, results, testset, testResults: Matrix[string]] =
# Loads the dataset and the testset for the supervised learning test
let dataset = parseFile("assets/datasets/spamham.json")
let testset = parseFile("assets/testsets/spamham.json")
var corpus: seq[string] = @[]
var results: seq[string] = @[]
var test: seq[string] = @[]
var testResults: seq[string] = @[]
for label in dataset.keys():
for sentence in dataset[label]:
corpus.add(sentence.getStr())
results.add(label)
for label in testset.keys():
for sentence in testset[label]:
test.add(sentence.getStr())
testResults.add(label)
result = (corpus: newMatrix(corpus),
results: newMatrix(results),
testset: newMatrix(test),
testResults: newMatrix(testResults))
proc testMetrics(predictions, y: Matrix[float]): tuple[accuracy, precision, recall: float, tP, tN, fP, fN: int] =
# Computes the test metrics given the predictions and the
# expected results
var confusion = @[0, 0, 0, 0] # TP, TN, FP, FN
var success = 0
var i = 0
while i < y.len():
var predicted = predictions[0][i]
var expected = y[0][i]
if predicted == expected:
success += 1
if predicted == 1.0:
confusion[0] += 1
else:
confusion[1] += 1
elif predicted == 1.0 and expected == 0.0:
confusion[2] += 1
else:
confusion[3] += 1
result = (accuracy: success / len(predictions),
precision: confusion[0] / (confusion[0] + confusion[2]),
recall: confusion[0] / (confusion[0] + confusion[3]),
tP: confusion[0],
tN: confusion[1],
fP: confusion[2],
fN: confusion[3])
proc main =
# Runs the test
const stopwords = @["i", "me", "my", "myself", "we", "our", "ours",
"ourselves", "you", "you're", "you've", "you'll", "you'd",
"your", "yours", "yourself", "yourselves", "he", "him", "his",
"himself", "she", "she's", "her", "hers", "herself", "it", "it's",
"its", "itself", "they", "them", "their", "theirs", "themselves", "what",
"which", "who", "whom", "this", "that", "that'll", "these", "those", "am",
"is", "are", "was", "were", "be", "been", "being", "have", "has", "had",
"having", "do", "does", "did", "doing", "a", "an", "the", "and", "but",
"if", "or", "because", "as", "until", "while", "of", "at", "by", "for",
"with", "about", "against", "between", "into", "through", "during", "before",
"after", "above", "below", "to", "from", "up", "down", "in", "out", "on",
"off", "over", "under", "again", "further", "then", "once", "here", "there",
"when", "where", "why", "how", "all", "any", "both", "each", "few", "more",
"most", "other", "some", "such", "no", "nor", "not", "only", "own", "same",
"so", "than", "too", "very", "s", "t", "can", "will", "just", "don", "don't",
"should", "should've", "now", "d", "ll", "m", "o", "re", "ve", "y", "ain",
"aren", "aren't", "couldn", "couldn't", "didn", "didn't", "doesn",
"doesn't", "hadn", "hadn't", "hasn", "hasn't", "haven", "haven't",
"isn", "isn't", "ma", "mightn", "mightn't", "mustn", "mustn't", "needn",
"needn't", "shan", "shan't", "shouldn", "shouldn't", "wasn", "wasn't",
"weren", "weren't", "won", "won't", "wouldn", "wouldn't"]
const epochs = 10
const batch = 100
const inputSize = 512
let encoder = newLabelEncoder()
let cleaner = newTextPreprocessor(stopwords=newMatrix(stopwords), toLower=true,
stripPunctuation=true, normalize=false)
let vectorizer = newTFIDFVectorizer(minDf=0.01, maxDf=0.7, preprocessor=cleaner,
sublinearTf=false, smoothIdf=true)
var classifier = newNeuralNetwork(@[newDenseLayer(inputSize, 8),
newDenseLayer(8, 16),
newDenseLayer(16, 2)],
lossFunc=MSE,
activationFunc=ReLU,
learnRate=0.1,
momentum=0.3,
weightRange=(-1.0, 1.0),
biasRange=(-1.0, 1.0))
echo "ProjectSydney v0.2b - Accuracy test"
echo "\nLoading dataset and testset"
let loadTime = cpuTime()
let data = loadData()
echo &"Data loaded in {cpuTime() - loadTime:.2f} seconds"
echo "Processing and vectorizing dataset with TF-IDF weigths"
let vectorTime = cpuTime()
let xTrain = vectorizer.fitTransform(data.corpus, data.corpus)
let yTrain = encoder.fitTransform(data.results, data.results)[0]
echo &"Vectorized in {cpuTime() - vectorTime:.2f} seconds"
echo &"Feature count: {len(vectorizer.getFeatureNames())}"
echo &"Vocabulary size: {len(vectorizer.getVocabulary())}"
echo &"Corpus size: {len(data.corpus)}"
# let yTest = encoder.transform(data.testResults)
# let xTest = vectorizer.transform(data.testset)
var tempData: seq[float] = newSeqOfCap[float](inputSize)
var trainData: seq[tuple[x, y: Matrix[float]]] = @[]
# Pad the data to fit into the network
for i, row in xTrain:
for e in row:
if tempData.len() == inputSize:
break
tempData.add(e)
while tempData.len() < inputSize:
tempData.add(0.0)
if yTrain[i] == 1:
trainData.add((newMatrix[float](tempData), newMatrix[float](@[1.0, 0.0])))
else:
trainData.add((newMatrix[float](tempData), newMatrix[float](@[0.0, 1.0])))
tempData.setLen(0)
echo "Classifier parameters"
echo &"\tLearn rate: {classifier.learnRate}"
echo &"\tMomentum: {classifier.momentum}"
stdout.write("\tNetwork layout: ")
for i, layer in classifier.layers:
stdout.write(&"{layer.inputSize}x{layer.outputSize}")
if i < classifier.layers.high():
stdout.write(" -> ")
echo ""
echo &"Training neural network for {epochs} epochs with batch size of {batch}"
let trainTime = cpuTime()
classifier.train(epochs, batch, trainData)
echo &"Training completed in {cpuTime() - trainTime:.2f} seconds"
#[echo "\nTest parameters"
echo &"\tTest size: {len(data.testset)}"
let testTime = cpuTime()
let predictions = classifier.fastFeedForward(xTest)
let metrics = testMetrics(predictions, y_test)
echo &"\nTest completed in {cpuTime() - testTime:.2f} seconds, metrics below"
echo &"\tAccuracy: {metrics.accuracy * 100:.2f}%"
echo &"\tRecall: {metrics.recall:.2f}"
echo &"\tPrecision: {metrics.precision:.2f}"
echo &"\tF1-score: {pow((pow(metrics.precision, -1) + pow(metrics.recall, -1)) / 2, -1):.2f}"
echo "\tConfusion matrix"
echo &"\t\tTrue positives: {metrics.tP}"
echo &"\t\tTrue negatives: {metrics.tN}"
echo &"\t\tFalse negatives: {metrics.fN}"
echo &"\t\tFalse positives: {metrics.fP}"
]#
when isMainModule:
setControlCHook(proc () {.noconv.} = quit(0))
main()

View File

@ -44,12 +44,12 @@ type
Loss* = ref object
## A vectorized loss function and its derivative
function: proc (a, b: Matrix[float]): float
derivative: proc (x, y: Matrix[float]): Matrix[float] {.noSideEffect.}
derivative: proc (x, y: Matrix[float]): Matrix[float]
Activation* = ref object
## A vectorized activation function and its
## derivative
function: proc (input: Matrix[float]): Matrix[float] {.noSideEffect.}
derivative: proc (x: Matrix[float]): Matrix[float] {.noSideEffect.}
function: proc (input: Matrix[float]): Matrix[float]
derivative: proc (x: Matrix[float]): Matrix[float]
LayerKind* = enum
## A layer enumeration
Dense, Dropout, Sparse
@ -75,14 +75,14 @@ proc `$`*(self: NeuralNetwork): string =
result = &"NeuralNetwork(learnRate={self.learnRate}, layers={self.layers})"
proc newLoss*(function: proc (a, b: Matrix[float]): float, derivative: proc (x, y: Matrix[float]): Matrix[float] {.noSideEffect.}): Loss =
proc newLoss*(function: proc (a, b: Matrix[float]): float, derivative: proc (x, y: Matrix[float]): Matrix[float]): Loss =
## Creates a new Loss object
new(result)
result.function = function
result.derivative = derivative
proc newActivation*(function: proc (input: Matrix[float]): Matrix[float] {.noSideEffect.}, derivative: proc (x: Matrix[float]): Matrix[float] {.noSideEffect.}): Activation =
proc newActivation*(function: proc (input: Matrix[float]): Matrix[float], derivative: proc (x: Matrix[float]): Matrix[float]): Activation =
## Creates a new Activation object
new(result)
result.function = function
@ -179,7 +179,6 @@ proc backprop(self: NeuralNetwork, x, y: Matrix[float]): tuple[weights, biases:
# TODO: This can probably be optimized
for unact in unactivated:
activations.add(self.activation.function(unact))
# This stores the gradient of each layer for this sample: since it is a
# partial derivative the multiplication here is just an application of the
# chain rule (Because while the cost function does indeed depend on the
@ -190,10 +189,10 @@ proc backprop(self: NeuralNetwork, x, y: Matrix[float]): tuple[weights, biases:
deltaW[^1].replace(activations[^2].transpose())
# Backwards pass (actually the backwards pass began two lines earlier, we're just feeding
# the correction back through the rest of the network now)
for l in 2..self.layers.high():
diff = self.layers[^l].weights.transpose.dot(diff) * self.activation.derivative(unactivated[^l])
for l in 1..<self.layers.high():
diff = self.layers[^l].weights.transpose().dot(diff) * self.activation.derivative(unactivated[^l])
deltaB[^l].replace(diff)
deltaW[^l].replace(diff.dot(activations[^(l - 1)].transpose()))
deltaW[^l].replace(diff.dot(activations[^l].transpose()))
return (deltaW, deltaB)
@ -266,7 +265,7 @@ proc train*(self: NeuralNetwork, epochs: int, batchSize: int, data: var seq[tupl
i += batchSize
for batch in batches:
self.miniBatch(batch)
echo &"Completed training epoch {epoch + 1}"
## Utility functions
@ -282,13 +281,13 @@ func sigmoid(x: float): float = 1 / (1 + exp(-x))
# A bunch of vectorized activation functions
func sigmoid(input: Matrix[float]): Matrix[float] =
proc sigmoid(input: Matrix[float]): Matrix[float] =
result = input.apply(sigmoid, axis = -1)
func sigmoidDerivative(input: Matrix[float]): Matrix[float] = sigmoid(input) * (1.0 - sigmoid(input))
proc sigmoidDerivative(input: Matrix[float]): Matrix[float] = sigmoid(input) * (1.0 - sigmoid(input))
func softmax(input: Matrix[float]): Matrix[float] =
proc softmax(input: Matrix[float]): Matrix[float] =
# This is the good kind of softmax (stole it from
# stackoverflow lol) which means it doesn't violently
# detonate if the input gets too large because
@ -296,25 +295,25 @@ func softmax(input: Matrix[float]): Matrix[float] =
var input = input - input.max()
result = input.apply(math.exp, axis = -1) / input.apply(math.exp, axis = -1).sum()
func softmaxDerivative(input: Matrix[float]): Matrix[float] =
proc softmaxDerivative(input: Matrix[float]): Matrix[float] =
# I stole this too, by the way
var input = input.reshape(input.shape.cols, 1)
# I _love_ stealing functions from numpy!
result = input.diagflat() - input.dot(input.transpose())
func relu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = max(0.0, x), axis = -1)
func dxRelu(input: Matrix[float]): Matrix[float] = input.where(input > 0.0, 0.0)
proc relu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = max(0.0, x), axis = -1)
proc dxRelu(input: Matrix[float]): Matrix[float] = where(input > 0.0, ones[float](input.shape), 0)
func silu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = x * sigmoid(x), axis= -1)
func dSilu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = sigmoid(x) * (1 + x * (1 - sigmoid(x))), axis = -1)
proc silu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = x * sigmoid(x), axis= -1)
proc dSilu(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = sigmoid(x) * (1 + x * (1 - sigmoid(x))), axis = -1)
func htan(input: Matrix[float]): Matrix[float] =
proc htan(input: Matrix[float]): Matrix[float] =
let f = proc (x: float): float =
let temp = exp(2 * x)
result = (temp - 1) / (temp + 1)
input.apply(f, axis = -1)
func htanDx(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = 1 - (pow(tanh(x), 2)), axis = -1)
proc htanDx(input: Matrix[float]): Matrix[float] = input.apply(proc (x: float): float = 1 - (pow(tanh(x), 2)), axis = -1)
{.push.}
{.hints: off.} # So nim doesn't complain about the naming

View File

@ -25,7 +25,7 @@ import strformat
const emojiEndpoint = "https://raw.githubusercontent.com/omnidan/node-emoji/master/lib/emoji.json"
const emojiPath = "emojis.json"
const emojiPath = "assets/emojis.json"
type Emojizer* = ref object

View File

@ -250,20 +250,11 @@ proc transform*(self: TFIDFVectorizer, x: Matrix[string]): Matrix[float] =
# We initialize the matrix with zeros!
# This is basically a sparse matrix
var x = TextPreprocessor(self.preprocessor).transform(x)
var tf: float
var idf: float
var res = newSeqOfCap[seq[float]](len(x) * len(self.vocab))
for r in 0..<len(x):
res.add(@[])
for c in 0..<len(self.vocab):
res[^1].add(0.0)
result = zeros[float]((len(x), len(self.vocab)))
for i, document in x[0]:
for word in document.split(" "):
if word in self.vocab:
tf = self.termFrequency(word, document)
idf = self.inverseDocumentFrequency(word)
res[i][self.vocab[word]] = tf * idf
result = newMatrix(res)
result[i, self.vocab[word]] = self.termFrequency(word, document) * self.inverseDocumentFrequency(word)
proc fitTransform*(self: TFIDFVectorizer, corpus, x: Matrix[string]): Matrix[float] =

View File

@ -248,6 +248,8 @@ proc reshape*[T](self: Matrix[T], rows, cols: int): Matrix[T] =
proc transpose*[T](self: Matrix[T]): Matrix[T] =
## Transposes rows and columns in the given
## matrix. No data copies occur
if self.shape.rows == 0:
return self
result = self.reshape(self.shape.cols, self.shape.rows)
result.order = if result.order == RowMajor: ColumnMajor else: RowMajor
@ -495,6 +497,8 @@ proc `+`*[T](a, b: MatrixView[T]): Matrix[T] =
proc `+`*[T](a, b: Matrix[T]): Matrix[T] =
## Performs matrix additions between the
## two inputs
when not defined(release):
if a.shape.rows > 0 and b.shape.rows > 0 and a.shape != b.shape:
raise newException(ValueError, &"incompatible argument shapes for addition")
@ -502,22 +506,25 @@ proc `+`*[T](a, b: Matrix[T]): Matrix[T] =
raise newException(ValueError, &"incompatible argument shapes for addition")
if a.shape.rows == 0 and b.shape.rows == 0:
return a[0] + b[0]
new(result)
new(result.data)
result.data[] = newSeqOfCap[T](result.shape.getSize())
result.shape = a.shape
result.order = RowMajor
if result.shape.rows > 1:
for row in 0..<result.shape.rows:
for m in a[row] + b[row]:
for element in m:
result.data[].add(element)
if a.shape.rows == 0:
result = zeros[T](b.shape)
for i, row in b:
for j, e in (row + a[0])[0]:
result[i, j] = e
elif b.shape.rows == 0:
result = zeros[T](a.shape)
for i, row in a:
for j, e in (row + b[0])[0]:
result[i, j] = e
else:
result = a[0] + b[0]
result = zeros[T](a.shape)
for i, row in a:
for j, e in (b[i] + row)[0]:
result[i, j] = e
proc `-`*[T](a, b: MatrixView[T]): Matrix[T] =
## Performs the vector sum of the
## Performs the vector difference of the
## given matrix views and returns a new
## vector with the result
when not defined(release):
@ -571,36 +578,31 @@ proc `*`*[T](a, b: MatrixView[T]): Matrix[T] =
proc `*`*[T](a, b: Matrix[T]): Matrix[T] =
## Performs matrix additions between the
## two inputs
when not defined(release):
if a.shape.rows > 0 and b.shape.rows > 0 and a.shape.cols != b.shape.rows:
if a.shape.rows > 0 and b.shape.rows > 0 and a.shape != b.shape:
raise newException(ValueError, &"incompatible argument shapes for multiplication")
elif (a.shape.rows == 0 or b.shape.rows == 0) and a.shape.cols != b.shape.cols:
raise newException(ValueError, &"incompatible argument shapes for multiplication")
new(result)
new(result.data)
result.shape = (a.shape.rows, b.shape.cols)
result.order = RowMajor
result.data[] = newSeqOfCap[T](result.shape.getSize())
if result.shape.rows > 1:
if a.shape.rows == b.shape.rows:
for row in 0..<result.shape.rows:
for m in a[row] * b[row]:
for element in m:
result.data[].add(element)
elif b.shape.rows < a.shape.rows:
for r1 in b:
for r2 in a:
for m in r1 * r2:
for element in m:
result.data[].add(element)
else:
for r1 in a:
for r2 in b:
for m in r1 * r2:
for element in m:
result.data[].add(element)
if a.shape.rows == 0 and b.shape.rows == 0:
return a[0] * b[0]
if a.shape.rows == 0:
result = zeros[T](b.shape)
for i, row in b:
for j, e in (row * a[0])[0]:
result[i, j] = e
elif b.shape.rows == 0:
result = zeros[T](a.shape)
for i, row in a:
for j, e in (row * b[0])[0]:
result[i, j] = e
else:
result = a[0] * b[0]
result = zeros[T](a.shape)
for i, row in a:
for j, e in (b[i] * row)[0]:
result[i, j] = e
# Comparison operators. They produce a new matrix of the same
# shape as the input(s) and containing boolean values (the result of
@ -1113,17 +1115,20 @@ when isMainModule:
doAssert all((x < 5).where(x, x * 10) == x.where(x < 5, x * 10)), "where mismatch"
doAssert x.max() == 9, "max mismatch"
doAssert x.argmax() == 10, "argmax mismatch"
doAssert all(newMatrix[int](@[12, 23]).dot(newMatrix[int](@[@[11, 22], @[33, 44]])) == newMatrix[int](@[891, 1276]))
doAssert all(newMatrix[int](@[@[1, 2, 3], @[2, 3, 4]]).dot(newMatrix[int](@[1, 2, 3])) == newMatrix[int](@[14, 20]))
doAssert all(m.diag() == newMatrix[int](@[1, 5]))
doAssert all(m.diag(1) == newMatrix[int](@[2, 6]))
doAssert all(m.diag(2) == newMatrix[int](@[3]))
doAssert m.diag(3).len() == 0
doAssert all(newMatrix[int](@[12, 23]).dot(newMatrix[int](@[@[11, 22], @[33, 44]])) == newMatrix[int](@[891, 1276])), "dot product mismatch"
doAssert all(newMatrix[int](@[@[1, 2, 3], @[2, 3, 4]]).dot(newMatrix[int](@[1, 2, 3])) == newMatrix[int](@[14, 20])), "dot product mismatch"
doAssert all(m.diag() == newMatrix[int](@[1, 5])), "diagonal mismatch"
doAssert all(m.diag(1) == newMatrix[int](@[2, 6])), "diagonal mismatch"
doAssert all(m.diag(2) == newMatrix[int](@[3])), "diagonal mismatch"
doAssert m.diag(3).len() == 0, "diagonal mismatch"
var j = m.fliplr()
doAssert all(j.diag() == newMatrix[int](@[3, 5]))
doAssert all(j.diag(1) == newMatrix[int](@[2, 4]))
doAssert all(j.diag(2) == newMatrix[int](@[1]))
doAssert all(j.diag() == newMatrix[int](@[3, 5])), "diagonal mismatch"
doAssert all(j.diag(1) == newMatrix[int](@[2, 4])), "diagonal mismatch"
doAssert all(j.diag(2) == newMatrix[int](@[1])), "diagonal mismatch"
doAssert j.diag(3).len() == 0, "diagonal mismatch"
var o = newMatrix[int](@[1, 2, 3])
doAssert all(o.diag() == newMatrix[int](@[@[1, 0, 0], @[0, 2, 0], @[0, 0, 3]]))
doAssert all(o.diag() == newMatrix[int](@[@[1, 0, 0], @[0, 2, 0], @[0, 0, 3]])), "diagonal mismatch"
var n = newMatrix[int](@[@[1, 2], @[3, 4]])
doAssert all(n.diagflat() == newMatrix[int](@[@[1, 0, 0, 0], @[0, 2, 0, 0], @[0, 0, 3, 0], @[0, 0, 0, 4]]))
doAssert all(n.diagflat() == newMatrix[int](@[@[1, 0, 0, 0], @[0, 2, 0, 0], @[0, 0, 3, 0], @[0, 0, 0, 4]])), "diagflat mismatch"
doAssert (newMatrix[int](@[1, 2, 3]) + newMatrix[int](@[@[1, 2], @[3, 4], @[5, 6]]).transpose()).sum() == 33, "matrix sum mismatch"
doAssert (newMatrix[int](@[@[1, 2], @[3, 4], @[5, 6]]).transpose() + newMatrix[int](@[1, 2, 3])).sum() == 33, "matrix sum mismatch"

View File

@ -64,6 +64,12 @@ proc transform*(self: LabelEncoder, labels: Matrix[string]): Matrix[int] =
result = newMatrix(res)
proc fitTransform*(self: LabelEncoder, labels, data: Matrix[string]): Matrix[int] =
## Shorthand for fit() and transform()
self.fit(labels)
result = self.transform(data)
proc reverseTransform*(self: LabelEncoder, labels: Matrix[int]): Matrix[string] =
## Reverses the transformation of the integer labels back to a string
assert self.is_fit, "The estimator must be fit!"