Twitterテキストのクリーニングを最適化する方法は?

llgruff

テキストクリーニング機能を書き直して効率を上げるにはどうすればよいですか?

import com.ibm.icu.text.Normalizer2

// A whitespace character: [ \t\n\x0B\f\r]
private val whiteSpaceRegex = "\\p{Space}"
// Any except letter (subtraction)
private val exceptLetterRegex = "[^\\p{L}]"

val normalize = (str: String) => Normalizer2.getNFKCCasefoldInstance.normalize(str)

val cleanse = (str: String) => normalize(str) // 1
  .toLowerCase // 2
  .split(whiteSpaceRegex) // 3
  .filterNot( // 4
    p => p.startsWith("@") || p.startsWith("/") || p.startsWith("http") || p.startsWith("www")
  ).mkString(" ") // 5
  .replaceAll("-", "") // 6
  .replaceAll(exceptLetterRegex, " ") // 7
  .replaceAll("\\s{2,}", " ") // 8
  .trim // 9
  1. 文字列の文字を正規化する
  2. 文字列を小文字に変更します
  3. 文字列を空白でArray [String]に分割します
  4. Twitter固有の単語を除外する:リンク、ニックネーム
  5. もう一度文字列を作成します
  6. ハイフンで単語を接着する(例:元妻から元妻へ)
  7. 文字を除くすべてをスペースに置き換えます
  8. 複数のスペースを単一のスペースに置き換えます
  9. 最初と最後のスペースを削除します

テスト:

val strMultiLine =
  """RT @digger: Что-то пиддес52 :|
и так скучать( HERE_HTTP_T_DOT_CO_LINK что,я +100500 surf cвихнусь так D:"""

val res1 = "rt чтото пиддес и так скучать что я surf cвихнусь так d"

cleanse(strMultiLine) must equal(res1)

val strWithLineBreak =
  "Говорит: \"\"Кто то в углу сидит))) и погибает от голода!!! мы,хотя уже сидим из-за\"\" :DD …"

val res2 = "говорит кто то в углу сидит и погибает от голода мы хотя уже сидим изза dd"

cleanse(strWithLineBreak) must equal(res2)
  • HERE_HTTP_T_DOT_CO_LINK —Stackoverflowからテキストからリンクを削除するように求められました
WiktorStribiżew

多くの機能強化の余地はあまりないようです。リンクやメンションを削除する最初の部分と、文字以外の削除を1つの正規表現に縮小することをお勧めしますが、事前にハイフンを削除する必要があります。

val cleanse2 = (str: String) => normalize(str)                  // Normalize
      .replace("-","")                                          // Remove -
      .replaceAll("""(?<!\S)(?:[@/]|http|www)\S*|\P{L}""", " ") // Remove entities
      .replaceAll("""\s{2,}""", " ")                            // Shrink whitespaces
      .trim                                                     // Trim the result
      .toLowerCase                                              // To lower case

正規表現のデモを参照してください

(?<!\S)(?:[@/]|http|www)\S*|\P{L}パターンマッチ

  • (?<!\S) -空白または文字列の開始位置は、現在の位置の直前になければなりません
  • (?:[@/]|http|www)\S*- 、または、その後、任意の0+非空白の文字@/httpwww
  • | -または
  • \P{L} -文字以外の文字。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のCASEステートメントでSELECTクエリを最適化する方法は?

分類Dev

テキストを検索するクエリの最適化

分類Dev

GUIDクラスター化された主キーを持っています-フラグメント化される可能性のあるテーブルを最適化またはフラグメント化解除する方法はありますか?

分類Dev

リストを含むオブジェクトのフィルタリングを最適化する方法は?

分類Dev

ストリームを使用してテストクラスをユニット化する最良の方法は?

分類Dev

Typescriptのifステートメントを最適化する方法

分類Dev

PLSQL スクリプトの最適化/チューニング

分類Dev

Laravel 7でクエリステートメントを最適化する方法は?

分類Dev

スクリプトの速度を最適化する方法は?

分類Dev

UIテストの自動化にディープラーニングを適用する方法は?

分類Dev

テキストのクリーニング手順を単一のPython関数に凝縮する方法は?

分類Dev

テキストレンダリングの速度を最適化してから、遅延スタイルシートを介して非同期的に読みやすさを最適化することは有効ですか?

分類Dev

新しいオブジェクトを作成せずにテキストメニューを作成するための最適化された方法

分類Dev

変化する色のグリッドをテキストにアニメーション化する方法はありますか?

分類Dev

PHPファイルのメニューバーのテキストとリンクを編集する適切な方法は何ですか?

分類Dev

SyslogNG-フィルターとログステートメントを最適化する方法は?

分類Dev

このUMLダイアグラムクラスをドキュメント生成用に最適化する方法

分類Dev

forループオーバーイメージの条件ステートメントを最適化する方法は?

分類Dev

ReactJavaScriptこれを最適化する方法if /またはステートメント

分類Dev

ifelseステートメントを最適化する方法

分類Dev

このメーリング リストのPowerShellスクリプトを最適化するにはどうすればよいですか

分類Dev

mysqlリクエストを最適化する方法は?

分類Dev

Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

分類Dev

すべてのドメインコントローラー間でクエリを最適化して、最新のログオン日を見つける方法は?

分類Dev

OpenGLテキストレンダリング用の文字コード表で最適なグリフ境界を計算する方法

分類Dev

Python:ネットワークの最小スパニングツリーを視覚化する方法は?

分類Dev

曲線上にテキストを描画し、それをアニメーション化する最もパフォーマンスの高い方法は?

分類Dev

テンソルのリストを最適化するTensorflow

分類Dev

Pythonのifステートメントを最適化する

Related 関連記事

  1. 1

    複数のCASEステートメントでSELECTクエリを最適化する方法は?

  2. 2

    テキストを検索するクエリの最適化

  3. 3

    GUIDクラスター化された主キーを持っています-フラグメント化される可能性のあるテーブルを最適化またはフラグメント化解除する方法はありますか?

  4. 4

    リストを含むオブジェクトのフィルタリングを最適化する方法は?

  5. 5

    ストリームを使用してテストクラスをユニット化する最良の方法は?

  6. 6

    Typescriptのifステートメントを最適化する方法

  7. 7

    PLSQL スクリプトの最適化/チューニング

  8. 8

    Laravel 7でクエリステートメントを最適化する方法は?

  9. 9

    スクリプトの速度を最適化する方法は?

  10. 10

    UIテストの自動化にディープラーニングを適用する方法は?

  11. 11

    テキストのクリーニング手順を単一のPython関数に凝縮する方法は?

  12. 12

    テキストレンダリングの速度を最適化してから、遅延スタイルシートを介して非同期的に読みやすさを最適化することは有効ですか?

  13. 13

    新しいオブジェクトを作成せずにテキストメニューを作成するための最適化された方法

  14. 14

    変化する色のグリッドをテキストにアニメーション化する方法はありますか?

  15. 15

    PHPファイルのメニューバーのテキストとリンクを編集する適切な方法は何ですか?

  16. 16

    SyslogNG-フィルターとログステートメントを最適化する方法は?

  17. 17

    このUMLダイアグラムクラスをドキュメント生成用に最適化する方法

  18. 18

    forループオーバーイメージの条件ステートメントを最適化する方法は?

  19. 19

    ReactJavaScriptこれを最適化する方法if /またはステートメント

  20. 20

    ifelseステートメントを最適化する方法

  21. 21

    このメーリング リストのPowerShellスクリプトを最適化するにはどうすればよいですか

  22. 22

    mysqlリクエストを最適化する方法は?

  23. 23

    Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

  24. 24

    すべてのドメインコントローラー間でクエリを最適化して、最新のログオン日を見つける方法は?

  25. 25

    OpenGLテキストレンダリング用の文字コード表で最適なグリフ境界を計算する方法

  26. 26

    Python:ネットワークの最小スパニングツリーを視覚化する方法は?

  27. 27

    曲線上にテキストを描画し、それをアニメーション化する最もパフォーマンスの高い方法は?

  28. 28

    テンソルのリストを最適化するTensorflow

  29. 29

    Pythonのifステートメントを最適化する

ホットタグ

アーカイブ