Как извлечь слова из образца корпуса, который поставляется с NLTK? - PullRequest
0 голосов
/ 22 января 2011

НЛТК поставляется с некоторыми образцами корпусов по адресу: http://nltk.googlecode.com/svn/trunk/nltk_data/index.xml

Я хочу иметь только текст без кодировок. Я не знаю, как извлечь такой контент. Что я хочу извлечь, это

1) nps_chat: имя файла похоже на 10-19-20s_706posts.xml после распаковки. Такой файл в формате XML, например:

<Posts>
<Post class="Statement" user="10-19-20sUser7">now im left with this gay name<terminals>

                <t pos="RB" word="now"/>
                <t pos="PRP" word="im"/>
                <t pos="VBD" word="left"/>
                <t pos="IN" word="with"/>
                <t pos="DT" word="this"/>
                <t pos="JJ" word="gay"/>
                <t pos="NN" word="name"/>
            </terminals>

        </Post>
            ...
            ...

Мне нужен только этот фактический пост:

now im left with this gay name

Как можно в NLTK или (как угодно) сохранить голые посты после удаления кодировок на локальный диск?

2) расшифровка стенограммы. Этот тип файла (имя файла является дискурсом после распаковки) содержит следующие форматы. Я хочу удалить предыдущие маркеры:

o A.1 utt1: Okay, /
qy A.1 utt2: have you ever served as a juror? /
ng B.2 utt1: Never. /
sd^e B.2 utt2: I've never been served on the jury, never been called up in a jury, although some of my friends have been jurors. /
b A.3 utt1: Uh-huh. /
sd A.3 utt2: I never have either. /
% B.4 utt1: You haven't, {F huh. } /
...
... 

Я хочу иметь только:

Okay, /
have you ever served as a juror? /
Never. /
I've never been served on the jury, never been called up in a jury, although some of my friends have been jurors. /
Uh-huh. /
I never have either. /
You haven't, {F huh. } /
...
... 

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Во-первых, вам нужно сделать corpus reader для корпуса. В nltk.corpus можно использовать некоторые программы чтения корпуса, например:

AlpinoCorpusReader
BNCCorpusReader
BracketParseCorpusReader
CMUDictCorpusReader
CategorizedCorpusReader
CategorizedPlaintextCorpusReader
CategorizedTaggedCorpusReader
ChunkedCorpusReader
ConllChunkCorpusReader
ConllCorpusReader
CorpusReader
DependencyCorpusReader
EuroparlCorpusReader
IEERCorpusReader
IPIPANCorpusReader
IndianCorpusReader
MacMorphoCorpusReader
NPSChatCorpusReader
NombankCorpusReader
PPAttachmentCorpusReader
Pl196xCorpusReader
PlaintextCorpusReader
PortugueseCategorizedPlaintextCorpusReader
PropbankCorpusReader
RTECorpusReader
SensevalCorpusReader
SinicaTreebankCorpusReader
StringCategoryCorpusReader
SwadeshCorpusReader
SwitchboardCorpusReader
SyntaxCorpusReader
TaggedCorpusReader
TimitCorpusReader
ToolboxCorpusReader
VerbnetCorpusReader
WordListCorpusReader
WordNetCorpusReader
WordNetICCorpusReader
XMLCorpusReader
YCOECorpusReader

После того, как вы сделали из своего корпуса читатель корпуса, вот так:

c = nltk.corpus.whateverCorpusReaderYouChoose(directoryWithCorpus, regexForFileTypes)

вы можете получить слова из корпуса, используя следующий код:

paragraphs = [para for para in c.paras()]
for para in paragraphs:
    words = [word for sentence in para for word in sentence]

Это должно дать вам список всех слов во всех параграфах вашего корпуса.

Надеюсь, это поможет

1 голос
/ 10 февраля 2017

Вы можете использовать .words() свойство из nltk corpus

content = nps_chat.words()

Это даст вам все слова в списке

['now', 'im', 'left', 'with', 'this', 'gay', 'name', ...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...