Я извлек триграммы из кучи файлов HTML, следуя определенному шаблону. Когда я их печатаю, я получаю список списков (где каждая строка - триграмма). Я хотел бы распечатать его в outfile для дальнейшего анализа текста, но когда я его пробую, он печатает только первые триграммы. Как я могу напечатать все триграммы в outfile? (Список списка из трехграмм). В идеале я хотел бы объединить все триграммы в один список, вместо того, чтобы иметь несколько списков с одной трехграммой. Ваша помощь будет высоко оценена.Запись фильтрованных ngrams в outfile - список списков
Мой код выглядит следующим образом до сих пор:
from nltk import sent_tokenize, word_tokenize
from nltk import ngrams
from bs4 import BeautifulSoup
from string import punctuation
import glob
import sys
punctuation_set = set(punctuation)
# Open and read file
text = glob.glob('C:/Users/dell/Desktop/python-for-text-analysis-master/Notebooks/TEXTS/*')
for filename in text:
with open(filename, encoding='ISO-8859-1', errors="ignore") as f:
mytext = f.read()
# Extract text from HTML using BeautifulSoup
soup = BeautifulSoup(mytext, "lxml")
extracted_text = soup.getText()
extracted_text = extracted_text.replace('\n', '')
# Split the text in sentences (using the NLTK sentence splitter)
sentences = sent_tokenize(extracted_text)
# Create list of tokens with their POS tags (after pre-processing: punctuation removal, tokenization, POS tagging)
all_tokens = []
for sent in sentences:
sent = "".join([char for char in sent if not char in punctuation_set]) # remove punctuation from sentence (optional; comment out if necessary)
tokenized_sent = word_tokenize(sent) # split sentence into tokens (using NLTK word tokenization)
all_tokens.extend(tokenized_sent) # add tagged tokens to list
n=3
threegrams = ngrams(all_tokens, n)
# Find ngrams with specific pattern
for (first, second, third) in threegrams:
if first == "a":
if second.endswith("bb") and second.startswith("leg"):
print(first, second, third)
Большое спасибо. Я получил соответствие шаблону регулярного выражения, но я все еще не могу распечатать его в текстовом файле. Точно так же печатает первую строку, к сожалению. Как вы могли подозревать, что я совершенно новый, поэтому я могу сделать что-то не так ... – Lee
Вы используете фрагмент кода в ответе? Или все еще используете ваши? Что такое входной файл, вы можете поделиться им? И каков ожидаемый результат? – alvas
Проверьте свои отступы. Удалите весь код и затем начните проверку с итерации файла, например. распечатайте контент по строкам. Часть кода НЛП должна быть в порядке. – alvas