Created
May 5, 2017 12:18
-
-
Save lionello/08f841bb6ade70bff98d7679adbf23ee to your computer and use it in GitHub Desktop.
Count/detect popular words in social media messages
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env dmd -run | |
import std.range; | |
struct Words(R,int maxWordLen = 4) | |
{ | |
int wordLen; | |
R inner; | |
dchar[maxWordLen] buffer; | |
this(R inner) { | |
this.inner = inner.save;//refRange(&inner); | |
foreach (ref d; buffer) { | |
if (this.inner.empty) break; | |
d = this.inner.front; | |
this.inner.popFront(); | |
} | |
} | |
@property bool empty() { return wordLen > maxWordLen; } | |
@property const(dchar)[] front() @nogc { return buffer[0..wordLen]; } | |
void popFront() { | |
if (++wordLen <= maxWordLen || this.inner.empty) | |
return; | |
import std.algorithm; | |
std.algorithm.copy(buffer[1..$], buffer[0..$-1]);//, buffer[1..$]); | |
//buffer[0..$-1] = buffer[1..$]; | |
buffer[$-1] = this.inner.front(); | |
this.inner.popFront(); | |
wordLen = 1; | |
} | |
} | |
auto byWords(R)(R range) { | |
return Words!R(range); | |
} | |
void main(string[] args) { | |
import std.stdio; | |
import std.utf; | |
import std.algorithm.iteration; | |
long[dstring] counts; | |
import std.curl; | |
`#台湾青春三部曲#今年夏天,电影《六弄咖啡馆》带你回到“那些年”的青涩时光,回到“少女时代”的自己。台湾青春三部曲,继续和你谈一场充满未知数的恋爱。` | |
`一位用户为了表达自己对Windows 95的“爱”,利用Dosbox模拟器,使这款操作系统运行在Xbox One上。他还在Windows 95上玩起了《毁灭公爵》。O网页链接` | |
`这个我吃!//@尤三-U3:[哆啦A梦吃惊]可以的! //@曜_世事翻覆多言相误:哈哈哈哈哈哈哈好吧我吃 //@落小翎是冬日翎饺子:好带感!! //@星际魔法赏金猎人阿九:可以的可以的! //@瘪三爷_:天!了!噜! //@凤梨晒菊花去了:这可以有` | |
`丝不挂的大卫被众名画人物嘲笑尺寸太小,羞愤之下,大卫一路逃出了博物馆......结局真是赞叹让人!` | |
`主银让博美犬泡澡,没想到博美犬居然泡着泡着就睡着了。 。 。这汪的双眼皮还真是深,简直就是汪界的美男子` | |
`#520撩汉日#5.20即将到来,你准备了怎样的惊喜给他呢?我们已经收到了许多有趣的想法,继续@Gucci 官方微博分享你或甜蜜或特别的创意,只要能够让人印象深刻,就有机会获赠5.20特别大礼! L520撩汉日开启撩汉技能` | |
`【快讯:埃及航空一架从巴黎飞往开罗的航班从雷达上消失】据埃及航空消息,埃及航空一架从巴黎飞往开罗的804航班从雷达上消失。该航班当地时间23点09分起飞,载有59名乘客和10名机组人员。` | |
`#首发#@谭维维 献唱的#X战警:天启#中国宣传推广曲《Take My Hand》MV终于公开[酷]!MV中,为了搭配未来感十足的电影画面,谭维维身着银色金属质感的上衣与短裙,质感十足的声线搭配电影极具科幻视觉震撼力的画面,足够引爆你的视听神经!还在期待这部大片的你,先来观看MV过过瘾吧[色][来]!>>...展开全文` | |
`三辆小车钻胡同,拍摄当天真心累,拿到正片时太开心,小牛M1很抢镜!感谢@小時光LTime 北锣面包吧。位于北锣鼓巷的小时光咖啡猫猫狗狗可爱,氛围轻松,常有网红出没,临走还能带走玫瑰!@ramp驾道 6月刊#五环之歌二环篇 @朱微微 @小牛电动 @TOKEN胡依林 @大众汽车 @奔驰smart @许群 感谢@摄影师痞子东` | |
`【Wintel出狠招:Kaby Lake捆绑Win 10的背后】PC出货量连续六个季度出现下滑的状况,微软和英特尔自然不想坐视PC产业一直颓废下去。有消息指出,英特尔和微软可能正在盘算:只有使用最新的Windows 10,年内发布的Kaby Lake以及六月底登场的入门级Apollo Lake才会获得更好的支持。O网页链接` | |
.byDchar | |
.filter!(a => a >= '一') | |
.byWords | |
.each!(w => counts[w.idup] += w.length+1); | |
import std.algorithm.sorting; | |
counts | |
.byKeyValue | |
.array | |
.sort!(q{a.value > b.value}) | |
.take(40) | |
.each!(a => writeln(a.key, '\t', a.value)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment