GNU/Linux >> Linux の 問題 >  >> Linux

コマンドラインからストップワードリストを含むファイルで最も頻繁に使用されるN個の単語を検索しますか?

ストップワードリストを使用して、テキストファイルで最も頻繁に使用される単語を検索したいと思います。私はすでにこのコードを持っています:

tr -c '[:alnum:]' '[\n*]' < test.txt |
fgrep -v -w -f /usr/share/groff/current/eign |
sort | uniq -c | sort -nr | head  -10 > test.txt

古い投稿から
しかし、私のファイルには次のようなものが含まれています:

240 
 21 ipsum
 20 Lorem
 11 Textes
 9 Blindtexte
 7 Text
 5 F
 5 Blindtext
 4 Texte
 4 Buchstaben

最初のものは単なるスペースであり、テキストでは句読点(ポイントなど)ですが、これは必要ないので、何を追加する必要がありますか?

承認された回答:

このテストファイルを検討してください:

$ cat text.txt
this file has "many" words, some
with punctuation.  some repeat,
many do not.

単語数を取得するには:

$ grep -oE '[[:alpha:]]+' text.txt | sort | uniq -c | sort -nr
      2 some
      2 many
      1 words
      1 with
      1 this
      1 repeat
      1 punctuation
      1 not
      1 has
      1 file
      1 do

仕組み

  • grep -oE '[[:alpha:]]+' text.txt

    これにより、スペースや句読点を除いたすべての単語が1行に1語返されます。

  • sort

    これにより、単語がアルファベット順に並べ替えられます。

  • uniq -c

    これは、各単語が出現する回数をカウントします。 (uniqの場合 動作させるには、入力を並べ替える必要があります。)

  • sort -nr

    これにより、出力が数値で並べ替えられ、最も頻繁に使用される単語が一番上に表示されます。

混合ケースの処理

この混合ケースのテストファイルを検討してください:

$ cat Text.txt
This file has "many" words, some
with punctuation.  Some repeat,
many do not.

someを数えたい場合 およびSome 同じように:

$ grep -oE '[[:alpha:]]+' Text.txt | sort -f | uniq -ic | sort -nr
      2 some
      2 many
      1 words
      1 with
      1 This
      1 repeat
      1 punctuation
      1 not
      1 has
      1 file
      1 do

ここでは、-fを追加しました sortのオプション 大文字と小文字と-iを無視するようにします uniqのオプション 大文字と小文字も無視するようにします。

ストップワードを除く

これらのストップワードをカウントから除外したいとします:

$ cat stopwords 
with
not
has
do

したがって、grep -vを追加します これらの単語を削除するには:

$ grep -oE '[[:alpha:]]+' Text.txt | grep -vwFf stopwords | sort -f | uniq -ic | sort -nr
      2 some
      2 many
      1 words
      1 This
      1 repeat
      1 punctuation
      1 file

Linux
  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. 各行の重複を無視して、.csvファイルで最も頻繁に使用される単語を見つける方法は?

  3. 最大のファイル記述子を持つプロセスを見つける方法は?

  1. xclipを使用してLinuxコマンドラインでコピーして貼り付けます

  2. 「tar」コマンドと「find」コマンドを組み合わせる方法

  3. 「vi」のコマンドラインから行番号が表示されたファイルを開くにはどうすればよいですか?

  1. LinuxコマンドラインからのGoogleドライブの使用

  2. ファイル内で最も頻繁に使用されるN個の単語を検索しますか?

  3. ちょっとしたトリック:ランダムなファイルまたはファイル内の行を shuf で選択します