@ツイートのスクリーンネームやハッシュタグの識別方法について

318 views
Skip to first unread message

Takeshi Iwasaki

unread,
May 31, 2012, 7:53:52 AM5/31/12
to twitter-devel...@googlegroups.com
こんばんわ。
@twtrfk です。

現在、投稿時に@ツイートやハッシュタグの誤爆しないように事前に文字列のチェックしようとしています。

Twitter blog 2011年7月13日水曜日(#日本語ハッシュタグ)には
<ハッシュタグの前後には空白または句読点を>
とあるのですが、実際には空白または句読点以外の
『#日本語』
<#日本語>
等でもハッシュタグとして識別されます。

@ツイートのスクリーンネームも同様に前後が空白でなくても識別される場合があります。

ここで質問なのですが、Twitterのシステム側でツイートの文字列から@スクリーンネームやハッシュタグを識別する時のルールはどこかに公開されているのでしょうか?

宜しくお願いします。

Yusuke Yamamoto

unread,
May 31, 2012, 8:46:55 AM5/31/12
to twitter-devel...@googlegroups.com
こんにちは。山本です。

ハッシュタグやスクリーン名の識別は正規表現で行っており、オープンソース化されています。
細かいルールはお手数ですがソースコードレベルでご確認いただくか、ライブラリを叩いて動作を検証していただけますでしょうか。
- Ruby
https://github.com/twitter/twitter-text-rb
- Java
https://github.com/twitter/twitter-text-java
- Objective-C
https://github.com/twitter/twitter-text-objc
- JavaScript
https://github.com/twitter/twitter-text-js
- テストデータ
https://github.com/twitter/twitter-text-conformance

以上よろしくお願い致します。
--
山本 裕介
yus...@mac.com

このメールは: [x] ブログ/Twitterへ転載可能 [ ] 私信
@yusukey
http://samuraism.jp/

Takeshi Iwasaki

unread,
May 31, 2012, 9:17:43 AM5/31/12
to twitter-devel...@googlegroups.com
ありがとうございます!!
早速参考にさせてもらいます!!


2012年5月31日 21:46 Yusuke Yamamoto <yus...@mac.com>:

Takeshi Iwasaki

unread,
Jun 4, 2012, 4:09:45 AM6/4/12
to twitter-devel...@googlegroups.com
こんにちわ。いわさき @twtrfk です。

とりあえず必要な
Regex.java
Extractor.java
regex.Spaces.java
だけ組み込んで動かしてみたのですが、
テストで想定している挙動と違うケースがあるようです。

例えば
- description: "DO NOT extract username preceded by !"
text: "f!@kn"
expected: []

- description: "DO NOT extract username preceded by @"
text: "f@@kn"
expected: []

- description: "DO NOT extract username preceded by #"
text: "f#@kn"
expected: []

- description: "DO NOT extract username preceded by $"
text: "f$@kn"
expected: []

- description: "DO NOT extract username preceded by %"
text: "f%@kn"
expected: []

- description: "DO NOT extract username preceded by &"
text: "f&@kn"
expected: []

- description: "DO NOT extract username preceded by *"
text: "f*@kn"
expected: []
の場合、テストでは全てのケースでスクリーン名と認識されないハズなのですが、
実際に動かすと全てのケースでknがスクリーン名として認識されました。

さらに、実際のwww.Twitter.com上の挙動は
f&@kn
だけ、スクリーン名として認識されています。

公開されているライブラリ(正規表現)は、実際にTwitterで採用されているものと差があると言う認識でいいのでしょうか?
その場合、差分がどの程度かがわかる情報はあるのでしょうか?


以上、宜しくお願いします。

2012年5月31日 21:46 Yusuke Yamamoto <yus...@mac.com>:
Reply all
Reply to author
Forward
0 new messages