【问题标题】:Mining a text file for specific keywords挖掘特定关键字的文本文件
【发布时间】:2018-08-07 11:49:30
【问题描述】:

我有一个 15MB 的 .txt 文件;我想指定四到五个关键字来查看它们在文件中出现的次数,然后以类似直方图的方式绘制它们。请提出出路

【问题讨论】:

  • 试试写代码!

标签: text-files counting keyword-search


【解决方案1】:

在 bash 中,如果您要查找 wordOne、wordTwo 或 wordThree 的出现,您可以执行以下操作:

cat myFile | egrep -o "wordOne|wordTwo|wordThree" | sort | uniq -c

这意味着:读取 myFile,查找 wordOne、wordTwo 和 wordThree 的出现并仅输出这些出现,对输出的行进行排序,在计算出现次数的同时删除重复项。

请注意,这也将匹配 wordOneOther,因为我们不确保单词边界。这可以通过多种方式完成,但取决于您需要什么以及您的文件是什么样的。

绘图是另一个问题。您可以使用诸如 gnuplot 之类的东西,也可以将输出粘贴到 excel 或 matlab 之类的...

【讨论】:

    【解决方案2】:

    安装 nltk。做文本分析将非常有用。安装后,以下代码将帮助您获取特定单词的字数:

    import nltk
    
    with open('C:\\demo.txt', 'r') as f:
        #The following line will create a list of words from the text.
        words = nltk.word_tokenize(f.read())
        #print (words)
        #The following line will create a word-frequency combo, so you can call any word to get its frequency
        fdist = nltk.FreqDist(words)
        print (fdist['This'])
    

    一旦您准备好这些数据并以您选择的格式存储,您就可以使用 matplotlib 或 seaborn 创建一个简单的直方图。

    【讨论】:

    • 抱歉,我在检查 Python 问题时找到了你的问题。没想到你根本没有提到python!
    • 谢谢!我刚刚尝试了'spider'中的代码,但它抛出了这个错误<_io.textiowrapper name="D:\\output.txt" mode="r" encoding="cp1252">。我猜代码没有获取文件
    • 嗨。你能显示完整的错误吗? <_io.textiowrapper name="D:\\output.txt" mode="r" encoding="cp1252"> 看起来不像是错误。看起来您试图在以下行中打印对象 f:"with open('C:\\demo.txt', 'r') as f:" 并且 python 打印了对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2012-01-25
    • 2018-04-29
    • 1970-01-01
    • 2019-05-05
    • 2013-02-09
    相关资源
    最近更新 更多