【问题标题】:How to remove English words from a file containing Dari words?如何从包含达里语单词的文件中删除英语单词?
【发布时间】:2018-02-06 15:28:25
【问题描述】:

如何找到英文单词并将其从包含达里语单词的文件中删除?我试过这段代码,但我不知道如何改进它。

inp = open('Dari.pos', 'r')
out = open('DariNER.txt', 'w')

for line in iter(inp):
   ------------?
   out.write(word)
inp.close()
out.close()

【问题讨论】:

  • 到目前为止您尝试过什么?你在哪里挣扎?
  • @UniversE 我只阅读文件并列出所有英文和非英文单词,但我不知道如何检测英文单词并删除。

标签: python python-3.x python-2.7 nlp stanford-nlp


【解决方案1】:

您可以安装和使用nltk 库。这为您提供了英文单词列表以及将每行拆分为单词的方法:

from nltk.tokenize import word_tokenize
from nltk.corpus import words

english = words.words()

with open('Dari.pos') as f_input, open('DariNER.txt', 'w') as f_output:
    for line in f_input:
        f_output.write(' '.join(word for word in word_tokenize(line) if word.lower() not in english) + '\n')

安装nltk后,你应该运行:

import nltk
nltk.download()

并用它来下载words

【讨论】:

    【解决方案2】:
    infile = "Dari.pos"
    outfile = "Cleaned_English_Tags.txt"
    
    delete_list = ['NOUN', 'ADJ', 'PUNCT', 'INTJ', 'ADV', 'VERB', 'X', 'CCONJ', 'ADP', 'AUX', 'SCONJ', 'PRON', 'DET', 'NUM', 'AU']
    fin = open(infile)
    fout = open(outfile, 'w')
    
    for line in fin:
        for word in delete_list:
            line = line.replace(word, " ")
        fout.write(line)
    
    fin.close()
    fout.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多