锁定。这个问题及其答案是 locked 因为这个问题是题外话但具有历史意义。它目前不接受新的答案或互动。








我已经用 PHP 为自己制定了这个解决方案,但我很好奇如何以不同的方式完成它 - 甚至更好。我主要感兴趣的两种语言是 PHP 和 Javascript,但我很想看看今天在任何其他主要语言(主要是 C#、Java 等)中也能以多快的速度完成这项工作。

  • 只返回出现次数大于 X 的单词
  • 只返回长度大于 Y 的单词
  • 忽略诸如“和、是、该等”之类的常用术语
  • 在处理之前随意去除标点符号(即“John's”变成“John”)
  • 在集合/数组中返回结果

  • 额外学分
  • 将引用语句放在一起,(即“它们显然‘好得令人难以置信’”)其中“好得令人难以置信”将是实际语句

  • 额外加分
  • 您的脚本能否根据单词出现的频率确定应该放在一起的单词?这是在事先不知道单词的情况下完成的。例子:



    很明显,这里的词是“果蝇”,我们很容易找到。您的 search'n'scrape 脚本也可以确定这一点吗?

  • 源文本:http://sampsonresume.com/labs/c.txt

    答案格式
  • 除了操作持续多长时间之外,还可以查看代码的结果、输出。
  • 最佳答案

    GNU 脚本

    sed -e 's/ /\n/g' | grep -v '^ *$' | sort | uniq -c | sort -nr
    

    结果:
      7 be
      6 to
    [...]
      1 2.
      1 -
    

    出现次数大于 X:
    sed -e 's/ /\n/g' | grep -v '^ *$' | sort | uniq -c | awk '$1>X'
    

    仅返回长度大于 Y 的单词(在第二个 grep 中放置 Y+1 个点):
    sed -e 's/ /\n/g' | grep -v '^ *$' | grep .... | sort | uniq -c
    

    忽略诸如“and、is、the 等”之类的常用术语(假设常用术语在文件“已忽略”中)
    sed -e 's/ /\n/g' | grep -v '^ *$' | grep -vf ignored | sort | uniq -c
    

    在处理之前随意去除标点符号(即“John's”变成“John”):
    sed -e 's/[,.:"\']//g;s/ /\n/g' | grep -v '^ *$' | sort | uniq -c
    

    在集合/数组中返回结果:它已经像 shell 的数组:第一列是计数,第二列是单词。

    关于code-golf - 代码高尔夫 : Quickly Build List of Keywords from Text, 包括实例数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1038252/

    10-13 08:54