6

私はこの質問がここここで尋ねられたことを知っていますが、私がそれを試したときに小さな問題がありました:

x<- str_extract("Hello peopllz! My new home is #crazy gr8! #wow", "#\S+")
Error: '\S' is an unrecognized escape in character string starting "#\S"

正規表現を"#(.+) ?"、に変更しました"#\\s"が、ハッシュタグが抽出されませんでした。

次に、gsubの方法を試しました。

x<- gsub("[^#(.+) ?]","","Hello! #London is gr8. #Wow")

それは与えました:" # . #"

私が間違っているアイデアはありますか?ツイート内のすべてのハッシュタグのベクトル/リストとして出力したい(ハッシュなしで!)

編集:次の理由から、ツイートをトークン化しないことをお勧めします。1.プログラムの残りの部分でツイートをトークン化しない、2。大量のツイートを処理するようにスケーリングすると、非常にコストのかかる手順になります。

4

3 に答える 3

11

"#\\S+"の代わりに使用してください"#\S+"

str_extract_all("Hello peopllz! My new home is #crazy gr8! #wow", "#\\S+")
# [[1]]
# [1] "#crazy" "#wow"  

ここで行われている解析には2つのレベルがあります。内の低レベルの正規表現関数str_extractが検索するパターンを取得する前に(つまり "#\S+")、最初にRによって解析されます。Rは\S有効なエスケープ文字として認識せず、エラーをスローします。スラッシュをエスケープすることにより、\\Rに、とを1つのエスケープ文字として解釈するのではなく、2つの通常の文字としてregexp関数に渡す\よう指示Sます。

サイドトラック

これはかなり奇妙な表現を生み出す可能性があります。の形式でWindowsネットワーク上のコンピュータへのアドレスのリストがあると想像してください"\\computer"。それを検索するには、内部的str_extract(adr, "\\\\\\w+")に変換されるものを入力してから検索する必要があります。"\\\w+"

于 2012-12-07T12:30:06.863 に答える
3

チャイムを鳴らすだけです。Twitterデータへのアクセス方法によっては、この情報がすでに解析されている場合があります。たとえば、サンプルストリームにアクセスする場合、生のJSON形式には、参照やタグなどを配列として解析するエントリがあります。こちらのTwitterAPIドキュメントを参照してください。

于 2012-12-07T17:56:31.433 に答える
0

#\S+に置き換えてみませんか#\\\S+

于 2012-12-07T12:29:24.033 に答える