RingtonePreference не удается добавить новые мелодии на Android 8.1

Прежде всего, вы можете использовать nltk.pos_tag() напрямую, не обучая его. Функция загрузит предварительно обработанный теггер из файла. Вы можете увидеть имя файла с помощью nltk.tag._POS_TAGGER:

nltk.tag._POS_TAGGER
>>> 'taggers/maxent_treebank_pos_tagger/english.pickle' 

Поскольку он был обучен с корпусом Treebank, он также использует набор тегов Treebank .

Следующая функция будет отображать теги treebank в WordNet часть имен реплик:

from nltk.corpus import wordnet

def get_wordnet_pos(treebank_tag):

    if treebank_tag.startswith('J'):
        return wordnet.ADJ
    elif treebank_tag.startswith('V'):
        return wordnet.VERB
    elif treebank_tag.startswith('N'):
        return wordnet.NOUN
    elif treebank_tag.startswith('R'):
        return wordnet.ADV
    else:
        return ''

Затем вы можете использовать возвращаемое значение с помощью lemmatizer:

from nltk.stem.wordnet import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('going', wordnet.VERB)
>>> 'go'

Проверить возвращайте значение перед передачей его в Lemmatizer, потому что пустая строка даст KeyError.

4
задан user93796 17 January 2019 в 18:31
поделиться

1 ответ

Копирование исходного кода Android-27, похоже, что addCustomExternalRingtone копирует выбранный вами звуковой файл, но данный параметр TYPE_ALL не позволяет определить каталог для сохранения.

addCustomExternalRingtone

   @WorkerThread
    public Uri addCustomExternalRingtone(@NonNull final Uri fileUri, final int type)
            throws FileNotFoundException, IllegalArgumentException, IOException {

        ...

        // Choose a directory to save the ringtone. Only one type of installation at a time is
        // allowed. Throws IllegalArgumentException if anything else is given.
        final String subdirectory = getExternalDirectoryForType(type);

        // Find a filename. Throws FileNotFoundException if none can be found.
        final File outFile = Utils.getUniqueExternalFile(mContext, subdirectory,
                Utils.getFileDisplayNameFromUri(mContext, fileUri), mimeType);

        // Copy contents to external ringtone storage. Throws IOException if the copy fails.
        try (final InputStream input = mContext.getContentResolver().openInputStream(fileUri);
                final OutputStream output = new FileOutputStream(outFile)) {
            Streams.copy(input, output);
        }

        // Tell MediaScanner about the new file. Wait for it to assign a {@link Uri}.
        try (NewRingtoneScanner scanner =  new NewRingtoneScanner(outFile)) {
            return scanner.take();
        } catch (InterruptedException e) {
            throw new IOException("Audio file failed to scan as a ringtone", e);
        }
    }

И getExternalDirectoryForType, где ошибка действительно происходит.

    private static final String getExternalDirectoryForType(final int type) {
        switch (type) {
            case TYPE_RINGTONE:
                return Environment.DIRECTORY_RINGTONES;
            case TYPE_NOTIFICATION:
                return Environment.DIRECTORY_NOTIFICATIONS;
            case TYPE_ALARM:
                return Environment.DIRECTORY_ALARMS;
            default:
                throw new IllegalArgumentException("Unsupported ringtone type: " + type);
        }
    }

Дело в том, что RingtonePickerActivity не может решить, какой тип выбрать для сохранения, и, наконец, дать TYPE_ALL.

Похоже, вам следует переопределить точку выбора файла и передать uri и type в RingtoneManager.addCustomExternalRingtone, либо сохранить файл самостоятельно.

0
ответ дан taka 17 January 2019 в 18:31
поделиться
Другие вопросы по тегам:

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