Программно обнаруживающее “самое важное содержание” на странице

Возможно, вам следует попробовать использовать метод NSBundle method pathForResource:ofType: для создания пути к файлу.

Следующий код должен успешно воспроизвести аудиофайл. Я использовал его только с mp3, но я думаю, что он также должен работать с m4a. Если этот код не работает, вы можете попробовать изменить формат аудиофайла. Для этого кода аудиофайл находится в главной директории проекта.

/* Use this code to play an audio file */
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test"  ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

РЕДАКТИРОВАТЬ

Хорошо, попробуйте следующее:

NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a",[[NSBundle mainBundle] resourcePath]];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite

[player play];

Также убедитесь, что вы правильно импортировали:

#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
8
задан Sampson 18 June 2009 в 22:17
поделиться

11 ответов

Читаемость отлично справляется с этой задачей.

Это открытый исходный код и размещен в Google Code .


ОБНОВЛЕНИЕ: Я вижу ( через HN ), что кто-то использовал удобочитаемость для преобразования RSS-каналов в более удобный формат, автоматически .

11
ответ дан 5 December 2019 в 04:58
поделиться

Я думаю, что очень эффективный алгоритм для этого может быть: «Какой DIV содержит больше всего текста, содержащего мало ссылок?»

Редко в объявлениях содержится более двух или трех предложений текст. Посмотрите, например, на правую часть этой страницы.

Область содержимого почти всегда является областью с наибольшей шириной на странице.

1
ответ дан 5 December 2019 в 04:58
поделиться

Я бы, вероятно, начал с заголовка и чего-либо еще в теге заголовка, а затем отфильтровал теги заголовков по порядку (например, h1, h2, h3 и т. Д.) ... кроме этого, я Думаю, я бы пошел по порядку, сверху вниз. В зависимости от стиля, можно с уверенностью предположить, что заголовок страницы будет иметь идентификатор или уникальный класс.

0
ответ дан 5 December 2019 в 04:58
поделиться

Иногда есть раздел CSS Media, определенный как «Печать». Он предназначен для ссылок "Щелкните здесь, чтобы распечатать эту страницу". Обычно люди используют его, чтобы избавиться от лишних хлопот и оставить только основную часть информации.

http://www.w3.org/TR/CSS2/media.html

Я бы попытался прочитать этот стиль, а затем очистить все, что осталось видимым.

10
ответ дан 5 December 2019 в 04:58
поделиться

Я думаю, что это самый простой способ было бы искать самый большой блок текста без разметки. Затем, как только он будет найден, выясните его границы и извлеките его. Вы, вероятно, захотите исключить определенные теги из «не разметки», такие как ссылки и изображения, в зависимости от того, на что вы нацелены. Если у него будет интерфейс, можно включить список тегов, которые нужно исключить из поиска.

Вы также можете найти самый нижний уровень в дереве DOM и выяснить, какой из этих элементов самый большой, но это не поможет. t хорошо работают на плохо написанных страницах, так как dom-дерево часто ломается на таких страницах. Если вы в конечном итоге воспользуетесь этим, я d придумал какой-то способ проверить, не перешел ли браузер в режим причуд, прежде чем пробовать его.

Вы также можете попробовать использовать несколько из этих проверок, а затем придумать метрику для определения наилучшего. Например, все же попробуйте использовать мой второй вариант выше, но дайте ему более низкий «рейтинг», если бы браузер обычно переходил в режим причуд. Очевидно, что это повлияет на производительность.

2
ответ дан 5 December 2019 в 04:58
поделиться

Вы можете использовать вспомогательные векторные машины для классификации текста. Одна из идей состоит в том, чтобы разбить страницы на разные разделы (скажем, рассмотреть каждый структурный элемент, как div - это документ), собрать некоторые его свойства и преобразовать в вектор. (Как предлагали другие люди, это может быть количество слов, количество ссылок, количество изображений, чем больше, тем лучше.)

Сначала начните с большого набора документов (100–1000), в котором вы уже выбираете, какая часть является основной. . Затем используйте этот набор для обучения вашей SVM.

И для каждого нового документа вам просто нужно преобразовать его в вектор и передать в SVM.

Эта векторная модель действительно очень полезна при классификации текста, и вам не нужно обязательно используйте SVM. Вы также можете использовать более простую байесовскую модель.

И если вам интересно, вы можете найти более подробную информацию в Введение в поиск информации . (В свободном доступе в Интернете)

2
ответ дан 5 December 2019 в 04:58
поделиться

представьте свой стандартный веб-сайт в стиле новостей / блога / журнала, содержащий навигацию (возможно, с подменю), рекламу, комментарии и приз - нашу статью / блог / тело новостей.

Как бы вы автоматически определяли, какая информация в новостях / блогах / журналах является первичной?

Я бы, вероятно, попробовал что-то вроде этого:

  • открытый URL-адрес
  • читать во всех ссылках на тот же веб-сайт с эта страница
  • переходит по всем ссылкам и строит дерево DOM для каждого URL (файл HTML)
  • , это должно помочь вам найти избыточное содержимое (включая шаблоны и т. д.)
  • сравнить деревья DOM для всех документов на одном сайте (обход дерева)
  • удаляет все избыточные узлы (т.е. повторяющиеся, навигационная разметка,рекламы и тому подобного)
  • попытайтесь идентифицировать похожие узлы и, если возможно, удалить
  • найти самые большие уникальные текстовые блоки, которых нет в других DOM на этом веб-сайте (т.е. уникальный контент)
  • добавить в качестве кандидата для дальнейшего обработка

Такой подход кажется довольно многообещающим, потому что это было бы довольно просто сделать, но все же у него есть хороший потенциал для адаптации даже к сложным страницам Web 2.0, которые чрезмерно используют шаблоны, потому что он будет идентифицировать похожие узлы HTML. между всеми страницами одного и того же веб-сайта.

Это, вероятно, можно было бы дополнительно улучшить, упростив использование системы оценки для отслеживания узлов DOM, которые ранее были идентифицированы как содержащие уникальное содержимое, чтобы эти узлы имели приоритет для других страниц.

уникальный контент)
  • добавить в качестве кандидата для дальнейшей обработки
  • Такой подход к выполнению этого кажется довольно многообещающим, потому что это было бы довольно просто сделать, но все же у него есть хороший потенциал для адаптации даже к сложным страницам Web 2.0, которые создают чрезмерные использование шаблонов, потому что он идентифицирует похожие HTML-узлы между всеми страницами на одном и том же веб-сайте.

    Это, вероятно, можно было бы улучшить, упростив использование системы баллов для отслеживания узлов DOM, которые ранее были идентифицированы как содержащие уникальное содержимое, так что эти узлы имеют приоритет для других страниц.

    уникальный контент)
  • добавить в качестве кандидата для дальнейшей обработки
  • Такой подход к выполнению этого кажется довольно многообещающим, потому что это было бы довольно просто сделать, но все же у него есть хороший потенциал для адаптации даже к сложным страницам Web 2.0, которые создают чрезмерные использование шаблонов, потому что он идентифицирует похожие HTML-узлы между всеми страницами на одном и том же веб-сайте.

    Это, вероятно, можно было бы улучшить, упростив использование системы баллов для отслеживания узлов DOM, которые ранее были идентифицированы как содержащие уникальное содержимое, так что эти узлы имеют приоритет для других страниц.

    потому что он будет идентифицировать похожие HTML-узлы между всеми страницами на одном и том же веб-сайте.

    Это, вероятно, можно было бы дополнительно улучшить, упростив использование системы оценки для отслеживания узлов DOM, которые ранее были определены как содержащие уникальное содержимое, чтобы эти узлы имеют приоритет для других страниц.

    потому что он будет идентифицировать похожие HTML-узлы между всеми страницами на одном и том же веб-сайте.

    Это, вероятно, можно было бы дополнительно улучшить, упростив использование системы оценки для отслеживания узлов DOM, которые ранее были определены как содержащие уникальное содержимое, чтобы эти узлы имеют приоритет для других страниц.

    11
    ответ дан 5 December 2019 в 04:58
    поделиться

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

    Различие между статьями / сообщениями / потоками было бы хорошим фильтром, чтобы узнать, какой контент отличает конкретную страницу (очевидно, это должно быть расширено для фильтрации из случайной чуши вроде рекламы, цитат дня или баннеров). Структура содержания может быть очень похожей для нескольких страниц, поэтому не стоит слишком полагаться на структурные различия.

    0
    ответ дан 5 December 2019 в 04:58
    поделиться

    Я бы поискал предложения с пунктуацией. Меню, верхние и нижние колонтитулы и т. Д. Обычно содержат отдельные слова, но не предложения, заканчивающиеся запятыми и заканчивающиеся точкой или эквивалентной пунктуацией.

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

    0
    ответ дан 5 December 2019 в 04:58
    поделиться

    Instapaper отлично справляется с этим. Вы можете проверить блог Марко Армента , чтобы узнать, как он это сделал.

    0
    ответ дан 5 December 2019 в 04:58
    поделиться

    Сегодня большинство сайтов новостей / блогов используют платформу для ведения блогов. Поэтому я бы создал набор правил, по которым я буду искать контент. Например, две из самых популярных платформ для ведения блогов - это wordpress и Google Blogspot.

    Сообщения Wordpress отмечены:

    <div class="entry">
        ...
    </div>
    

    Сообщения Blogspot отмечены:

    <div class="post-body">
        ...
    </div>
    

    Если поиск по классам css завершился неудачно, вы можете обратиться к другим решениям, определив самый большой фрагмент текста и так далее.

    0
    ответ дан 5 December 2019 в 04:58
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: