【问题标题】:Something missing with NLTK and tokenizeNLTK 和标记化缺少一些东西
【发布时间】:2013-08-14 19:22:49
【问题描述】:

这是我尝试标记希腊段落的代码的一部分。

doc = "Ο υπουργός Οικονομικών Γιάννης Στουρνάρας διαβίβασε την Τετάρτη στον πρόεδρο της αρμόδιας Αρχής κατά του ξεπλύµατος µαύρου χρήµατος, Παναγιώτη Νικολούδη, το αίτημα του υπουργού Υγείας Αδωνι Γεωργιάδη για κατά προτεραιότητα έλεγχο του «πόθεν έσχες» των διοικητών και υποδιοικητών που υπηρέτησαν στο Εθνικό Σύστημα Υγείας από το 2000 έως και σήμερα."

tokens = nltk.WordPunctTokenizer().tokenize(doc)

结果缺少几个单词,例如"Αρχής""έσχες"

如果我将这个在线工具用于相同的标记化模块,文字仍然存在。

online tool

到目前为止我所了解的是,在这段代码之后,我还有另一行删除了所有带有

如果我打印标记,例如单词"έσχες" 标记为["έ","σχ","ες"]。为什么这些词也被标记了?我认为这个模块将句子分成单词。

【问题讨论】:

    标签: python nltk tokenize


    【解决方案1】:

    当您 decode 在将输入传递给 NLTK 之前将其输入到 Unicode 时,它​​会起作用。假设它被编码为 UTF-8:

    >>> doc = doc.decode("utf-8")
    >>> print(doc)
    Ο υπουργός Οικονομικών Γιάννης Στουρνάρας διαβίβασε την Τετάρτη στον πρόεδρο της αρμόδιας Αρχής κατά του ξεπλύµατος µαύρου χρήµατος, Παναγιώτη Νικολούδη, το αίτημα του υπουργού Υγείας Αδωνι Γεωργιάδη για κατά προτεραιότητα έλεγχο του «πόθεν έσχες» των διοικητών και υποδιοικητών που υπηρέτησαν στο Εθνικό Σύστημα Υγείας από το 2000 έως και σήμερα.
    >>> tokens = nltk.WordPunctTokenizer().tokenize(doc.decode("utf-8"))
    >>> for t in tokens:
    ...     print(t, end=" ")
    ... print()
    ... 
    Ο υπουργός Οικονομικών Γιάννης Στουρνάρας διαβίβασε την Τετάρτη στον πρόεδρο της αρμόδιας Αρχής κατά του ξεπλύµατος µαύρου χρήµατος , Παναγιώτη Νικολούδη , το αίτημα του υπουργού Υγείας Αδωνι Γεωργιάδη για κατά προτεραιότητα έλεγχο του « πόθεν έσχες » των διοικητών και υποδιοικητών που υπηρέτησαν στο Εθνικό Σύστημα Υγείας από το 2000 έως και σήμερα . 
    

    编辑:好的,改为decode("iso-8859-7")

    【讨论】:

    • 我试过了,但我有这个错误 doc = doc.decode("utf-8") File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xcf in position 0: invalid continuation byte
    • @Tasos:那么它不是 UTF-8,你应该弄清楚数据的编码方式。尝试将其转储到一个文件中并在其上运行file 命令。
    • 你能解释一下吗?我不明白你这个是什么意思。外部网址也可以。
    • 我找到了。我将它粘贴到一个 txt 文件中,然后用谷歌浏览器打开它。然后去编码并检查iso-8859-7。然后我在 python 代码上试了一下,它成功了!
    • 您能否使用新编码编辑您的答案,以便我将其选为最佳答案?
    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多