POS-тегер в Python без NLTK - PullRequest
       10

POS-тегер в Python без NLTK

0 голосов
/ 12 декабря 2018

Я пытаюсь создать POS-тегер для определителей и предлогов курдского языка Сорани.Я использую следующий код, чтобы поместить каждый тег после каждого предложения или определителя в мой курдский текст.

import os
SOR = open("SOR-1.txt", "r+", encoding = 'utf-8')
old_text = SOR.read()
punkt = [".", "!", ",", ":", ";"]
text = ""
for i in old_text:
    if i in punkt:
        text+=" "+i
    else:
        text += i

d = {"DET":["ئێمە" , "ئێوە" , "ئەم" , "ئەو" , "ئەوان" , "ئەوەی", "چەند" ], "PREP":["بۆ","بێ","بێجگە","بە","بەبێ","بەدەم","بەردەم","بەرلە","بەرەوی","بەرەوە","بەلای","بەپێی","تۆ","تێ","جگە","دوای","دەگەڵ","سەر","لێ","لە","لەبابەت","لەباتی","لەبارەی","لەبرێتی","لەبن","لەبەینی","لەبەر","لەدەم","لەرێ","لەرێگا","لەرەوی","لەسەر","لەلایەن","لەناو","لەنێو","لەو","لەپێناوی","لەژێر","لەگەڵ","ناو","نێوان","وەک","وەک","پاش","پێش","" ], "punkt":[".", ",", "!"]}

text = text.split()
for w in text:
    for pos in d:
        if w in d[pos]:
            SOR.write(w+"/"+pos+" ")
SOR.close()

Что я хочу сделать, это добавить POS-теги в текст после каждого слова в определенном словаре, но в результате получается отдельный список слов и POS-тегов в конце файла..

1 Ответ

0 голосов
/ 12 декабря 2018

имейте в виду, что old_text является одной строкой.Поэтому, когда вы проходите через него, как в

for i in old_text:
    if i in punkt:

, вы проходите через символы.Я думаю, что вы намерены вместо этого перебрать строки old_text.Если это так, вы можете открыть файл с помощью оператора with, задающего режимы read и write.Что-то вроде:

with open("SOR-1.txt", 'r+', encoding = 'utf-8') as f:
    old_text = f.readlines()
    for line in old_text:
        for punctuationMark in punct:
            if punctuationMark in line.strip('\n'):     #when you read the file, every line will be terminated with newline character `'\n'`
                #give more instructions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...