回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个.txt文件,有3列:单词位置、单词和标记(NN、VB、JJ等)。在</p>
<p>txt文件示例:</p>
<pre><code>1 i PRP
2 want VBP
3 to TO
4 go VB
</code></pre>
<p>我想在列表中找到单词和标记成对出现的频率,以便找到最常分配给单词的标记。
结果示例:
3(食物,NN),2(勇敢,形容词)</p>
<p>我的想法是从打开文件夹中的文件开始,逐行阅读并拆分文件,使用字典设置计数器并以最常见到不常见的降序打印。在</p>
<p>我的代码非常粗糙(我几乎不好意思发布它):</p>
^{pr2}$
<p>显然,我没有结果。任何事都会有帮助的。谢谢。在</p>
<p>更新:</p>
<p>所以我把这段代码贴在这里,它很有效,但我的结果有点奇怪。下面是代码(作者删除了它,所以我不知道该归功于谁):</p>
<pre><code>file=open("/Users/Desktop/Folder1/trained.txt").read().split('\n')
d = {}
for i in file:
if i[1:] in d.keys():
d[i[1:]] += 1
else:
d[i[1:]] = 1
print (sorted(d.items(), key=lambda x: x[1], reverse=True))
</code></pre>
<p>以下是我的结果:</p>
<pre><code>[('', 15866), ('\t.\t.', 9479), ('\ti\tPRP', 7234), ('\tto\tTO', 4329), ('\tlike\tVB', 2533), ('\tabout\tIN', 2518), ('\tthe\tDT', 2389), ('\tfood\tNN', 2092), ('\ta\tDT', 2053), ('\tme\tPRP', 1870), ('\twant\tVBP', 1713), ('\twould\tMD', 1507), ('0\t.\t.', 1427), ('\teat\tVB', 1390), ('\trestaurant\tNN', 1371), ('\tuh\tUH', 1356), ('1\t.\t.', 1265), ('\ton\tIN', 1237), ("\t'd\tMD", 1221), ('\tyou\tPRP', 1145), ('\thave\tVB', 1127), ('\tis\tVBZ', 1098), ('\ttell\tVB', 1030), ('\tfor\tIN', 987), ('\tdollars\tNNS', 959), ('\tdo\tVBP', 956), ('\tgo\tVB', 931), ('2\t.\t.', 912), ('\trestaurants\tNNS', 899),
</code></pre>
<p>似乎有一个好的结果与文字和其他结果与空格或随机数的混合,有谁知道一种方法删除什么不是真正的单词?另外,我知道\t应该表示制表符,有没有办法也删除它?你们真的帮了大忙</p>