我几乎解决了python讲座中的一个练习。我被要求编写一个程序,计算每个单词在文件中出现的频率,以及它被标记为哪个位置的频率。 计数应该写入一个新文件,这个文件也在命令行中给出。你知道吗
例如
python3 wordcount-pos.py wsj00-pos.txt counts-wsj00-pos.txt
应该产生如下输出:
Mortimer 1 NNP 1
foul 1 JJ 1
...
reported 16 VBN 7 VBD 9
...
before 26 RB 6 IN 20
...
allow 4 VB 2 VBP 2
我的代码生成如下输出:
Mortimer 1 {NNP: 1}
foul 1 {JJ: 1}
...
reported 2 {VBN: 7 VBD: 9}
...
before 2 {RB: 6 IN: 20}
...
allow 2 {VB: 2 VBP: 2}
它不打印“单词”在我字典里的出现次数
这是我的密码:
import sys
from collections import defaultdict
def main():
if len(sys.argv) != 3:
print('Usage: python poscount.py <input file>', file=sys.stderr)
sys.exit(1)
input_filename = sys.argv[1]
output_filename = sys.argv[2]
# your code
freq = defaultdict(list)
with open(input_filename) as f:
for line in f:
# skip empty lines
if line.strip() != '':
# split a word/pos pair into two separate strings
word, pos = line.strip().rsplit("/", 1)
# add word and list of pos as k, v into "freq" dictionary
freq[word].append(pos)
for k, v in freq.items():
D = defaultdict(list)
for i, item in enumerate(v):
D[item].append(i)
D = {k: len(v) for k, v in D.items()}
# Output file
with open(output_filename, "a") as f:
print(k + "\t" + str(len(D.items())) + "\t" + str(D), file=f)
if __name__ == '__main__':
main()
从中提取数据的文件:https://paste.elnota.space/nezemivaku.sql
文件的部分内容:
皮埃尔/NNP
维肯/NNP
,/
61/光盘
年/年
老/JJ
,/
威尔/医学博士
加入/VB
日期/DT
板/NN
作为/输入
应付账款
非执行/JJ
主任/NN
11月/NNP
29/光盘
./。你知道吗
先生/NNP 维肯/NNP
是/VBZ
主席/NN
我想这会解决你的问题
相关问题 更多 >
编程相关推荐